Your story is blurry for two reasons that usually stack. Instagram compresses stories harder than feed posts, and the file you gave it was almost certainly the wrong one: a screenshot, a full-size camera photo, or an image saved from WhatsApp. The fix is exact. Export a 1080×1920 JPEG under about 1.5 MB, keep anything important inside the middle 1420 px, turn on Upload at highest quality, turn off data saver, and post on Wi-Fi.
Here is why each of those matters, in the order they go wrong.
Stories are compressed harder than feed posts
Instagram treats a story as disposable. It lives for 24 hours, it plays full screen in a sequence, and it has to load instantly, so the app and the server both optimise for speed. In practice that means a lower encoding quality than a feed post gets, and a much more aggressive scale when the source is large.
The full-screen part matters as much as the compression. A feed post occupies part of the screen; a story stretches 1080 px across the whole thing, at arm's length. An artefact that is invisible in the feed is twice as large in a story. Add the fact that most stories are text and thin graphics, which JPEG handles worst, and "my story looks like mush" is the expected result of an ordinary upload, not a bug.
The exact size: 1080×1920
Stories and reels are 9:16, and the canvas is 1080×1920 pixels. Export exactly that.
- Smaller images (a 720 px screenshot, an image saved from a chat) are enlarged to fill the screen, which is soft before the compression even starts.
- Larger images (a 12 MP photo) are scaled down by Instagram's fast resampler and then compressed harder, because a bigger source gets a harsher pass.
- The wrong ratio (a 4:5 feed export, a 4:3 camera photo) is shown with a blurred or coloured background and the photo itself sits smaller in the frame. That is fine if you want it, but resize the photo to 1080 px wide first so the visible part stays sharp.
If a photo has to be cropped a lot to become 9:16, decide the crop yourself. The story size page lets you drag the photo to choose what stays.
Safe zones: the top and bottom 250 px
Instagram covers the top of a story with your profile picture, your name, the progress bars and the close button, and the bottom with the reply bar and share buttons. On most phones those bands are about 250 px tall each on the 1080×1920 canvas. Anything you put there is hidden, and any text you put there gets cut through the middle.
Rule: faces, text and logos live in the middle 1080×1420 of the canvas. The top 250 px and bottom 250 px are background only.
Stickers, polls, links and music are added inside the app and take more space, so leave room for them too. The same canvas is used for reel covers, with one extra catch: the profile grid shows only the centre 3:4 of a cover (1080×1440), so titles on a cover need to sit even closer to the middle. The reel cover page draws that box.
Why text and thin lines suffer most
JPEG, and the video codec Instagram uses for stories, are good at smooth areas and bad at hard edges. A letter is nothing but hard edges. Small text at 1080 px wide is only a few pixels thick, and after Instagram's pass those pixels smear into the background. Thin outlines, 1 px dividers and light-weight fonts go first.
What survives: large text, bold weights, solid colours behind it, strong contrast. If the text can be added in Instagram's own text tool rather than baked into the image, do that; it is drawn on the phone at full screen resolution and does not get resized along with the photo. If it has to be in the image, make it bigger than looks reasonable on your monitor. At phone size it will be right.
Screenshots and images saved from other apps
Screenshots are the single biggest source of blurry stories. A screenshot is a PNG at your phone's screen size, full of small text, with a status bar along the top. Instagram scales it, converts it to JPEG and compresses it, and the small text goes soft. Shared to a story it also sits inside the safe zones, so the top of the screenshot disappears under your name.
If you have to share one, crop off the status bar, keep the part that matters, resize to 1080×1920 with sharpening, and enlarge text-heavy screenshots so the text is bigger in the frame. For a tweet or a chat, a feed post at 4:5 is often the better format anyway; it is compressed less and displayed smaller, which hides more.
Images from WhatsApp or Telegram have already been scaled and compressed once (WhatsApp brings photos down to about 1600 px and 100 to 200 KB). Ask for the original, or have it sent as a document, before you post it.
Video stories, briefly
Video is worse than photos because it is compressed twice: the app encodes it on your phone, then the server encodes it again. Export 1080×1920 at 30 fps, straight from your editor, and never through a messaging app. Keep text larger still, because moving edges compress worse than static ones. Screen recordings have the same problems as screenshots, doubled. Upload at highest quality matters most here; it is the setting that stops the app-side encode from being the cheap one.
Connection and settings
Instagram adapts to your signal, and stories are where it adapts most. On a weak connection it can upload a lower-quality version so the story goes out quickly. Three settings and habits fix that:
- Upload at highest quality on, under Settings and activity › Media quality (Android: Data usage and media quality).
- Use less mobile data off, on the same screen.
- Wi-Fi or a strong signal, and stay in the app until the story has finished posting. Locking the phone mid-upload is a classic cause of a story that looks fine in the preview and terrible five minutes later.
The HD upload settings guide has the exact menus for both switches.
The fix, in order
- Start from the original file: the camera photo, the export from your editor, or the design file. Not a screenshot, not a chat copy.
- Crop to 9:16 and resize to exactly 1080×1920, then sharpen lightly on the final pixels.
- Keep faces, text and logos inside the middle 1080×1420.
- Export a JPEG in sRGB under about 1.5 MB. The story preset aims at roughly 950 KB.
- Turn on Upload at highest quality and turn off Use less mobile data.
- Post on Wi-Fi and let the upload finish.
The tool below does steps 2 to 4 in the browser and draws the safe zones on the preview while you drag the crop. Nothing is uploaded; it runs on the phone and works offline. Then share the file to Instagram and post it as a story.
What you cannot fix
Two honest limits. A story will always be compressed a little harder than the same image posted to the feed; the method above makes the difference hard to see, not zero. And nothing can put detail back into a screenshot or a chat copy. Resizing and sharpening stops a damaged image from getting worse, but the result will not match a clean export from the original.
HDR is another: stories do not display HDR at all, so an HDR photo from an iPhone is flattened. If a story looks dull and grey, export a standard SDR JPEG and try again.
Checklist
- 1080×1920, JPEG, sRGB, under about 1.5 MB
- Original file as the source, never a screenshot or a chat copy
- Faces and text inside the middle 1080×1420
- Text big and bold, or added with Instagram's text tool
- Upload at highest quality on, Use less mobile data off
- Wi-Fi, and wait for the upload to complete
Stories will never be the sharpest thing on Instagram. Give the app a file that needs no work and they stop being the blurriest.