Why Does My Astrophoto Look Bad? A Symptom-by-Symptom Guide
Work backwards from what you can see to what caused it. Soft stars, elongated stars, a green or orange sky, a washed-out background, coloured fringes, walking noise - each has a small number of causes and each is measurable.
Most astrophotography advice is organised by cause: here is what dew does, here is what flexure does. That is the wrong way round for the person actually holding a bad picture at one in the morning, who does not yet know the cause. They know the symptom.
So this is organised by symptom. Find the thing you can see, and work backwards.
One principle applies throughout, and it is worth stating before the list: almost every fault leaves a measurable trace in the pixels. You do not have to guess between three possible causes, because they usually leave different traces. Where a measurement can separate them, this guide says which measurement and what the numbers look like.
The stars are soft, everywhere, in every frame
Measure first: star size, as full width at half maximum - FWHM. It is the width of a star’s brightness profile at half its peak, in pixels.
What counts as good depends entirely on your focal length and pixel size, which is why a number from a forum post is close to useless. What matters is how it compares to your own best nights and how it varies across your own session.
If FWHM is high on every frame and steady: focus, seeing, or you are undersampled. Take a test exposure and step the focuser either side of where you are; if nothing improves it, the atmosphere was the limit that night.
If FWHM rises steadily through the session: the tube is cooling and the focus is drifting with it. This is the most common one and the most fixable - refocus every half hour, or after any temperature drop of a degree or two.
If FWHM jumps around frame to frame: the seeing was variable. Nothing to fix; this is what frame selection is for. Keep the sharp ones.
The stars are elongated
Two causes, and telling them apart is worth real money because the fixes cost very different amounts.
Measure: eccentricity, and crucially, whether it is in every frame.
Tracking. Some frames are stretched and others are not, and the direction changes through the night as the mount drifts and the guiding corrects. Look at a few frames in sequence: if the stretch comes and goes, or rotates, the mount moved.
Causes, roughly in order of likelihood: polar alignment, a cable snagging, wind, backlash, a mount carrying more than it should.
Optics. Every frame is stretched, in the same way, because the optics did not move between frames. Look at the corners against the centre - optical faults are usually worse away from the axis.
Causes: coma without a corrector, field curvature, camera tilt, a focuser sagging under the camera’s weight, a pinched mirror.
The practical difference: the first is a guiding problem and the second is a collimation, spacing or tilt problem. Buying a guide camera will not fix a tilted sensor.
Akastroid measures the elongation across the whole session and, when it finds the same stretch in every frame, says so - and rejects nothing for it. A rule that discards frames for a fault they all share leaves you with an empty session and no explanation. See Image Doctor.
The sky is orange, or brown, or green
Orange or brown is light pollution, and it is not a fault - it is what a sodium- and LED-lit sky genuinely looks like to a sensor. It comes out in processing, by neutralising the background and setting the white balance from the stars rather than from the frame’s average. Removing light pollution gradients goes through it.
Green is different, and green is never real. Nothing broadband in the night sky is green. What is green is your sensor: a Bayer array has twice as many green photosites as red or blue, because that is where the eye is most sensitive, and that bias survives a naive background correction. If your stack comes out olive, that is the camera, not the sky.
The exceptions are worth knowing so you do not “correct” a real observation: comets are frequently green - diatomic carbon fluorescing - and aurora is green for the same physical reason oxygen glows at 557.7 nm. Both are far above the background, which is how an automatic correction can tell them from a cast.
The background is grey and washed out, or pure black
These are the two ways to get the stretch wrong, and they are opposite errors.
Washed out means the background has been lifted too far. The picture looks foggy and the faint structure has no contrast against the sky.
Pure black is the more common mistake and the more damaging one. Real sky is never black - it is dark grey with faint structure emerging from it. An image whose background reads as pure black has usually had its faintest real signal clipped away along with the gradient. It looks clean at a glance and you have thrown data away.
Aim for a background that is clearly dark but clearly not zero.
There are coloured fringes on one side of everything
Atmospheric dispersion. The atmosphere refracts blue light more than red, so a subject low in the sky arrives on the sensor as three slightly separated images - blue edge on one side, red on the other.
It is worst at low altitude and gets rapidly better as the object climbs. On planets it is the single most common reason a capture that felt sharp looks wrong afterwards.
The fix in processing is to realign the colour channels to green, and it has to happen before sharpening - once sharpening has amplified the fringes, no alignment removes them cleanly.
There is a diagonal grain running through the whole image
Walking noise, and it has a specific cause: your mount drifted slowly and consistently in one direction, so the same sensor defects landed on nearly the same sky position in every frame. Stacking then reinforced them into streaks instead of averaging them away.
The fix is at capture, not in processing: dither between frames. Move the mount a few pixels in a random direction every frame or two, so a hot pixel lands somewhere different each time and outlier rejection can see it for what it is. Dithering and walking noise covers how much and how often.
Half the frames look fine and half look terrible
Measure: sky brightness and star count, together.
Cloud brightens the sky and drops the star count. Either signal alone means something else - a rising target brightens the sky on its own, a focus wobble drops the star count on its own. It is the two together that says cloud.
If the sky brightens through the session without losing stars, your target is sinking towards the horizon, or the Moon has risen.
The stars are bloated white discs with no colour
Overexposure. Measure the clipped fraction - what share of pixels are at maximum.
This is one of the few faults that is genuinely unfixable afterwards. A clipped star has no colour information left to calibrate, and a clipped core cannot be recovered by anything downstream, because the data is not there. Shorter subs, or lower gain.
A bright streak across one frame
A satellite or an aircraft, and it is usually not worth throwing the frame away. Outlier rejection during integration removes a streak that appears in one frame out of thirty, because it disagrees with the other twenty-nine at those pixels.
It is worth knowing how many you have, though. A frame with several is worth a second look, and a session where the count is climbing is a session where the satellite constellations are overhead.
How to stop guessing
Every measurement above - star size, star shape, signal to noise, sky brightness, sky gradient, cloud, trails, clipping, star count - is something a computer can do on every frame in the time it takes you to make tea, and every one of them is a number you can compare across your own session.
That is what Image Doctor in Akastroid does: twelve measurements per frame, a score relative to the rest of your session rather than to a constant, and a named fault beside every rejection. It is part of the free download, it runs on every session, and you can use it purely as a diagnosis without stacking anything.
Related: reading a quality score, why are my stars trailing.
Try it on your own data
Akastroid does everything in this guide automatically, and tells you what it did.
Download Akastroid - free