Clarity · July 30, 2026
How to make a low quality image high quality
How to make a low quality image high quality after a birthday photo was recompressed in a chat. Blocks plus smeared color.

Low quality is usually a short long-edge, a heavy JPEG, or both. Raise the low-resolution photo and keep the export you started with.
The picture is a birthday in a kitchen, and the message that came with it was how to make a low quality image high quality before Friday, because a print shop had laughed at the file. I laughed at it too, and then I measured it, because the laugh was not a diagnosis. The file from the chat was 1280 by 960, JPEG, 118 kilobytes. The frosting was broken into squares. The red balloon had a magenta fringe where it crossed the blue icing. The child's face, chin to the top of the hair, was 168 pixels. Low quality, in this case, was not a mood. It was a recompress that had thrown away three quarters of the linear size and then crushed what remained.
A day later the camera file turned up in a laptop folder the parent had forgotten, IMG_4481.jpg, 4032 by 3024, 3.4 megabytes. Same frame. 1280 times 3.15 is 4032. 960 times 3.15 is 3024. The chat file is that camera file, scaled by about 3.15 and saved hard. I am writing the repair of the chat file anyway, because Friday arrived before the laptop did, and because the next birthday will not have a laptop. The camera file is the ending. The chat file is the job.
TL;DR. The messenger copy was 1280 by 960 and 118 kilobytes, with 8 by 8 steps in the blue frosting and a color fringe on the balloon. The camera original, found later, was 4032 by 3024, and the same face was 530 pixels tall instead of 168. Sharpening the chat file outlined the blocks. A face pass made the child look older. I printed a cautious 2× of the chat file only because the original had not surfaced yet, after checking the candle count and the flames. When the original surfaced, I reprinted from it and retired the repair. High quality, here, meant the camera grid. Everything else was a proposal with a deadline.
What the chat file was actually made of
I opened the 118-kilobyte JPEG at one file pixel per screen pixel and looked at the frosting, which should have been a smooth blue with sprinkles. It was tiled. The tiles were 8 by 8. At the boundaries the blue stepped, a darker row of pixels along one side of the block and a lighter row along the other, like grout. Inside a block the blue was almost flat, which is the quantizer doing what it was asked. This is not film grain and it is not nearest-neighbor stairs. Grain would be random. Stairs would be exact copies of a smaller pixel. These blocks are the signature of a JPEG pushed too far, and the messenger's scaler had already made the pixels few enough that each block is a large fraction of a sprinkle.
The sprinkle edges were mush. A sprinkle that might have been 3 pixels wide in a kinder file was a colored smear about 6 pixels wide, and neighboring colors had crawled into it. The red balloon's edge against the blue was a magenta ramp about 3 pixels wide, on the blue side and on the red side both. That ramp is not a rim light. I checked the camera file later and the boundary is clean, a red pixel against a blue pixel with ordinary demosaic softness, nothing like 3 pixels of purple. On Friday I did not have that confirmation. I still did not paint the fringe away by hand, because a hand-painted balloon edge is a drawing of a party.
The face at 168 pixels is small but not the 80-pixel case. I could see eyes as eyes, a gap in the front teeth, a party hat whose tip was cut by the top of the frame. The gap in the teeth is the feature I chose as the identity lock. It is easy to "repair" a gap into a full smile. The hat's tip being cut off is the second lock. A model that completes the hat has invented a triangle the crop does not contain.
Four candles, counted twice. The flames are soft in the chat file, which flames often are, and they are also smeared by the compression, which is the part that is not optical. I wrote "four wicks" on the sheet. The fifth wick that appeared in a later 4× is the reason the sheet exists.
The kitchen behind is a cabinet and a window. The cabinet edges ring, a light halo from the JPEG, and the window is a blown rectangle with block steps in the highlight. I am not going to recover the view through the window. It was gone before the messenger, probably, and the messenger finished the job.
Sharpening, which made the cake look graph paper
The parent's first attempt, and then mine, because I repeated it before I looked at their attempt, was sharpen. Radius near 1.2, amount around 80, threshold 0. I want the numbers here because "a little sharpen" is how this starts. The grout between the frosting blocks turned into a drawn line. The magenta fringe became a neon wire. The teeth gained a white outline that made the gap look like a hole punched in a mask. At thumbnail size the face popped, and popping is why the amount goes to 80. At 100 percent the cake was graph paper.
I reverted. Their version was a separate JPEG, saved after the sharpen, 160 kilobytes, and the blocks were now baked into edges. I could not revert theirs. I told them we would stop using that export. A second save of an already crushed JPEG, with sharpening in it, is a new original only in the legal sense. In the photographic sense it is a deeper hole. We worked from the 118-kilobyte chat file, the least-processed bad file, not from the sharpened descendant.
If the damage had been grain rather than blocks, I would have been in a different note. The speckle note is grainy image. This cake was not grainy. It was tiled. Treating tiles as grain and blurring them until the grout disappears will also blur the sprinkles, and I did exactly that on a test layer, named blur-is-not-a-plan. The sprinkles died. The grout lightened. Nobody wants a smooth cake with no sprinkles as the memory of a birthday.
The order that did less harm
I eased the block edges first, a denoise-style pass aimed at the grout, watched at 100 percent on the frosting and on the teeth. The mild end of the enhance photo quality tool is the right comparison: original chat file against a cleaned file, slider on a sprinkle. If the sprinkle vanishes, I have gone too far, even if the frosting looks like a catalog. I stopped at the point where the grout became a faint step and the sprinkle still had a center. The magenta fringe shrank and did not disappear. A remaining fringe is more honest than a redrawn balloon.
Then scale. The print they wanted was a 5 by 7. The chat file is 4:3, so a 5 by 7 is a crop or a letterbox. We cropped a little off the sides, keeping the hat and the four candles, to a 4:5-ish window, and the face stayed 168 pixels tall. A 5 by 7 at 200 ppi wants 1000 by 1400. We did not have that. A 2× file is 2560 by 1920 before the crop, and the crop of it clears a 5 by 7 at 200 ppi with room. At 300 ppi a 5 by 7 wants 1500 by 2100, and the 2× crop still covers it if the crop is not aggressive. So 2× was enough pixels for the paper. 4× was extra invention.
The 2× result, after the block pass, looked like a photograph taken on a small sensor rather than like a broken JPEG. That is the highest praise I will give it. The flames stayed four. The tooth gap stayed. The hat stayed cut off. The frosting looked slightly pebbled, a texture that is not in the camera file, which I learned the next day. On Friday the pebble was acceptable next to graph paper.
The 4× result added a bright notch in the rightmost flame that read as a fifth wick if you were not counting carefully. I was counting carefully because I had written the number down before lunch. I also saw the hat grow a little red fold that continued into the crop, a completion of a shape that hits the frame edge. Completing to the frame edge is a common tell. I rejected the 4×. The pixelated photo tool got the 4× only as a comparison for the client, who still used the word pixelated for the grout. The grout is blocky. It is not the hard identical stair of a nearest-neighbor meme. Showing them the difference kept the next request from being "more upscale."
The face pass I will not repeat on a child
I ran a face restore on the cleaned 2× because the eyes were still soft and Friday was loud. The output was sharp. The tooth gap narrowed. The eyes were larger in the sense that the iris had a crisp rim and a catchlight the 168-pixel face did not resolve. The child looked about two years older and a little like a stock photo of a child at a party. I put it beside the chat file, scaled to match, and the likeness failed. Parents are sometimes dazzled by the sharp version and sometimes immediately upset. This parent was upset. I was relieved, because I was about to talk myself into it.
No face pass shipped. The 2× with the mild block cleanup shipped, as a 5 by 7, with a note that the camera file was still missing and the print was a best effort. The note mattered the next morning, when the camera file appeared and the 5 by 7 was already in a frame. We printed again. The first print is not a scandal. It is a 5 by 7 of a cleaned messenger JPEG. The second print is the photograph.


The generated sample I use for recompression is a flat scene whose edges have gone blocky and whose colors smear, a figure next to a frame with bars that are no longer clean. It is not the birthday and it is not a pure stair. The smear is the point I could not show with their child's face on a slide. Blocks plus smeared color. If a file looks like that sample, sharpening is the wrong first move.
The camera file, and what it made obvious
IMG_4481.jpg at 4032 by 3024 shows the same four candles, the same gap, the same cut-off hat. The face is 530 pixels tall. 530 divided by 168 is about 3.15, the same factor as the frame, which is a sanity check that I measured the face the same way in both files. The frosting is smooth. The balloon edge is clean. Sprinkles have edges. A fifth wick does not exist. The pebble texture I had half-accepted in the 2× is not there. The window is still blown, so I do not get to blame the messenger for every limit.
I printed the 5 by 7 from the camera file with a light output sharpen and no model. At 300 ppi a 5 by 7 wants 1500 by 2100, and a crop of a 4032-wide file has those pixels to spare. Effective ppi was closer to 400 on the crop I actually sent. There was nothing to enhance. The shop did not laugh.
I kept the messenger repair in the folder, labeled friday-print-from-chat, so I would not remember it as unnecessary. It was necessary on Friday. It became unnecessary on Saturday. Both statements stay. The mistake would have been to throw away the camera file's print because I had already done the clever work, or to throw away the clever work's record because the camera file made me feel silly. The record includes the fifth wick. I want the fifth wick the next time a flame looks "a bit more realistic."
| Generation | Size | Face height | Candles | What it is |
|---|---|---|---|---|
| Camera JPEG | 4032 by 3024, 3.4 MB | 530 px | four, clean flames | The photograph |
| Chat download | 1280 by 960, 118 KB | 168 px | four, smeared | The only file on Friday morning |
| Sharpened resave | about 1280, 160 KB | 168 px | four, outlined | Graph paper, do not use |
| Block cleanup, no scale | 1280 by 960 | 168 px | four | Grout eased, sprinkles kept |
| Cleanup then 2× | 2560 by 1920 | about 336 px | four | The Friday print |
| 4× | 5120 by 3840 | about 672 px | a hinted fifth | Rejected |
| Face restore on the 2× | 2× scale | looks older | four | Rejected, likeness failed |
The 4× face height is arithmetic, 168 times 4, and it felt like a portrait. Felt is not a candle count. The table is dull on purpose. Dull tables are how a hinted wick stays rejected when the preview is glowing.
What I would repeat, and what I will not
The search that finds this page usually wants a single slider labeled quality. The birthday did not have one. It had a chain. Camera, messenger, a bad sharpen, a cleanup, a modest enlarge, a rejected face tool, and then the camera again. Quality went down in the middle of the chain for reasons I can point at, block by block, and it came back only when the chain was abandoned for the original.
If you do not have the original, the chain I will defend is short.
- Start from the least-processed bad file, not from a sharpened resave.
- Sample the frosting or the sky. If you see 8 by 8 steps, do not sharpen. If you see exact 4 by 4 copies, you are in a different problem than this one.
- Ease the blocks only while small real edges, sprinkles, teeth, wicks, still have a center.
- Enlarge only as far as the print's inches require. A 2× that covers a 5 by 7 does not need a 4× sibling.
- Count the repeated objects before the pass and after. Candles, windows, teeth, fingers.
- Refuse a face tool that changes age, a tooth gap, or a catchlight you cannot find in the small file.
- Ask one more time for the camera file before you call the repair the master.
There is a wider pass at this kind of rescue in how to improve the picture quality, and the pixel-count version of the same hope in how to make a high resolution image from a low resolution one. The birthday's contribution is the pair of wounds, blocks and smeared color, and the candle count as a brake.
I reprinted Saturday's 5 by 7 on the same paper as Friday's so the frames would match, and I gave the parent both, with the dates on the back in pencil. Friday is a little pebbled in the blue. Saturday is the cake they baked. If a guest prefers Friday I will be surprised and I will still not call Friday higher quality. Quality, in the only way the word survived this job, is the file that still contains the sprinkle edges and the four flames the kitchen actually held. The messenger did not have them. A model did not get them back. The laptop did.
Questions that come up after the file is open
Can a chat photo be made as good as the camera file?
Only if you still have the camera file. The copy I measured was 1280 by 960 and 118 kilobytes, scaled down from 4032 by 3024. That reduction threw the detail away. A model can propose a cleaner picture. It cannot retrieve the larger file.
Why are there squares in the frosting and colored fringes on the balloons?
Those are two compression wounds. The squares are block edges, often 8 by 8, where the quantizer stepped. The fringe is color bleeding across a high-contrast boundary. Sharpening draws the squares. It does not remove them.
What order should I use to clean a recompressed birthday photo?
Find the camera original if it exists. If it does not, ease the block edges before any enlarge, and do not sharpen first. Then compare a modest 2× against the original on flames, candle count, and the face.
A face tool made the child look sharper and older. Is that an improvement?
It is a different child-shaped picture. On this file the eyes changed and the teeth evened. I rejected it. Quality, for a birthday, includes being the same person at the same age that afternoon.