Skycruncher logo Skycruncher experiment, October 2026

Why a Seestar's bright stars turn green or purple

Short answer: in a Seestar's raw frames, the three colors don't fill up at the same number. Red and blue run all the way to 65,535, the largest number the file can hold. Green stops lower: between 49,808 and 54,288 on every unit with normal color handling we measured. Once a bright star's core fills up, its color comes from those ceilings, not from the star.

A core that is full in every color holds more red and blue than green, so with one white level for all colors it reads purple (magenta). Your software's white balance and stretch then decide how strong the tint looks and, we think, can push it toward green: a balance that lifts green by more than about 1.15 to 1.3 times against red and blue turns a full core green. We haven't tested specific programs. The fix: once green reaches its ceiling, treat the pixel as full in every color, and don't trust the color of a saturated star.

49,808‑54,288where green stops (the bottom of its full band) on the 6 units with normal color handling; red and blue go on to 65,535
52–93 %of the electrons a full green pixel holds, where red and blue run out of codes (median 70 %, 21 measurements)
6–45 %of the full star images on a night that were full in green alone, with red and blue still below their top (14 nights)
40,000keep star peaks under this for brightness measurements: 0.80 of the lowest green ceiling we measured

Tools that look for 65,535 miss stars.

251 of 1,576

Full star images on the S50 Pro that a test for 65,535 lets through, because they were full in green alone. Every model showed the same problem.

Which color fills first

Below the ceiling, the response stays straight.

within 5 %

On the S30, S30 Pro and S50, green tracked its predicted brightness up to 0.9 of its ceiling. On the one S50 Pro we measured, green and red read 5 to 8 % low from 0.4 up (blue more), and we don't know why.

Below the ceiling

For pictures: one white level at green's ceiling.

white cores

Clip all three colors at green's ceiling and full cores come out white instead of purple or green. If you can't measure your ceiling, 49,000 was below every one we saw.

What to do about it

Words used on this page

Raw frame (sub)
One exposure as the Seestar saves it, before any stacking.
Code
The number a pixel records, from 0 to 65,535 in the Seestar's 16-bit files. 65,535 is the largest number the file can hold. (Elsewhere you'll see it called ADU.)
Color grid
Each pixel on the sensor sits under one red, green or blue filter; every 2×2 block has one red, two green and one blue pixel (a Bayer pattern). Software fills in the missing colors later, which is called debayering.
Electrons
What light frees in a pixel. The camera counts them and turns the count into a code.
Gain
How many electrons make one code. We measured it for each color separately, from how a pixel's noise grows with its brightness.
In-camera color scaling
The camera gives red and blue more codes per electron than green, so that ordinary light comes out roughly balanced. It's a white balance done before the file is written.
Full, clipped, saturated
A pixel that can't record any more light. Its ceiling (or clip level) is the lowest code at which it stops.
Pile and band
When a color stops at the file's top number, every full pixel reads exactly 65,535: a pile. When it stops at a limit before the file's top, full pixels spread over a range of codes, probably because each pixel fills at a slightly different point: a band (a plateau).

What we measured

We looked at raw frames from 8 Seestars: 3 S30s, 1 S30 Pro (our own), 3 S50s and 1 S50 Pro. Apart from ours, they came from owners who shared their frames. That made 17 sets on 16 nights between August 2025 and October 2026, mostly with the IR-cut filter, some with the light-pollution filter, in 10-, 20- and 30-second exposures. For each set we counted, code by code, how many pixels of each color landed at every value near the top of up to 30 frames, and found where each color's full pixels collect. For the bright stars on 40 frames a night we measured each color's peak and compared it with the brightness Gaia's star catalog predicts.

Everything on this page is exploratory. Every night here was already used to work the method out, so nothing has yet been checked on fresh data. How a check would work is at the end.

Measured

Where each color stops

green's full band, one bar per set red blue (a short tick: a pile at one code)
Where the full pixels of each color collect, one thin row per set of up to 30 frames. A bar is a band of codes; a short tick is a pile at a single code. The left end of each green bar is that night's green ceiling. Hover a model for its numbers.

Green never reaches 65,535 on any unit with normal color handling. Its full pixels spread over a band about 1,200 to 4,900 codes wide, and the bottom of that band, the green ceiling, sat at 49,808 on the S50 Pro, 51,680 to 53,344 on the S50s, 50,304 to 51,456 on the S30s and 53,568 to 54,288 on our S30 Pro. Red and blue piled up at exactly 65,535 on every unit except the two odd ones below.

Two units behave differently, and both make sense once you see why green stops lower (next sections). One S50 applies no color scaling: every color has nearly the same gain (within 7 %), and every color fills a narrow band ending at 65,520, just under the top. (65,520 is 4,095 × 16, which points at the top of a 12-bit converter; we haven't checked that.) A test for “equals 65,535” finds almost none of its full pixels. One S30, on one firmware version, scaled red barely more than green (1.03 times), so its red stops in a band too, from 60,112, and its green ceiling was 56,400, the highest we saw.

The ceiling isn't fixed for life. On one S30, green's ceiling was about 850 to 1,050 codes higher after a firmware update; on two S50s it moved by under 200 between nights, with or without an update. Two S30 nights showed no green band at all, because too few stars filled up.

Illustration built from the measured ceilings

Watch a star's core change color

Not a measurement. Each line is one pixel of that color at the star's core, as the star gets brighter, stopped at the median ceilings we measured for the model you pick. The star colors and the software lift are illustration values.

The star's own color
The core as the file holds it, one white level for all colors

red pixel green pixel blue pixel green's full band
Across: how bright the core is, as the code a green pixel would record if nothing stopped it. Up: the code the file actually holds. The two circles show the color of the star and of its core in the picture (shown with the brightness evened out so only the color differs). Drag the slider, or hover the chart.

Pick the gray star and slide right. Below green's ceiling all three colors rise together and the core is gray, as it should be. Then green stops while red and blue keep climbing, and the core turns lilac. Once red and blue reach 65,535 too, the core is full in every color and frozen at 65,535 red, about 53,500 green (on an S50) and 65,535 blue: purple, however bright the star really is. The tint here looks mild because the circles show the raw proportions; a stretch and any color or saturation boost in processing make it much stronger.

Now pick the warmer star. Its red fills first, at 65,535, while green is still rising, so the core loses red and turns paler, peach rather than orange, until blue fills too and it ends up purple like every other full core. The cooler star does the same with blue. On the unit with no color scaling, all three stop together and a full core stays gray.

Green needs the software. Suppose your camera records white stars with a little more red and blue than green, and your software lifts green to make them white again (the second button). Then red and blue reach 65,535 first, green keeps rising, and the full core comes out green. The arithmetic: on units with normal color handling, a full core's green sits at about 51,000 to 57,000, the middle of its band, so the core holds about 1.15 to 1.3 times as much red and blue as green. A balance that lifts green by more than that turns a full core green; one that lifts red and blue makes it more purple. We haven't tested what any particular program does.

Why green stops lower: one limit, scaled differently

Turn the codes back into electrons with each color's measured gain, and the picture is simple. On a given night, the colors seem to stop at one shared limit before the color scaling (the sensor or its analog-to-digital converter; we haven't pinned down which). Where two different colors both end in a band (4 cases, on the two odd units), they stopped within 7 % of the same electron count. The two green pixels of each block agree within 3 % on 9 of 13 nights and within 7 % on all of them.

The difference is the in-camera color scaling. Red and blue get 1.3 to 2.4 times as many codes per electron as green. So they reach 65,535, the end of the file's numbers, before they reach the shared limit: when they hold only 52 to 93 % of the electrons a full green pixel holds. Green, scaled least, reaches the shared limit first, while it's still under 65,535. That's why green ends in a band and red and blue end in a pile (the file's number runs out at exactly 65,535).

red blue this color also ends in a band (the two odd units)
Where red and blue stop, as a share of the electrons green holds when full, one mark per set. Normal units sit left of the line: red and blue run out of codes first. The odd units sit at or near the line (93 to 102 %): there the color reached the shared limit, like green. Hover a mark for the numbers.

The two odd units fit this. The S50 with no color scaling has nearly equal gains in all colors, so every color reaches the shared limit at about the same code, just under 65,535. The S30 whose red ends in a band scaled red by only 1.03 times on that firmware, so red, too, reached the limit before the file's top number.

Which color fills first? It depends on the star

For a star the camera records as gray, green fills first, because its ceiling is lower. But a star's color and where its peak lands on the color grid change the order. In our star measurements both orders were common. On every night some stars were full in green alone, with red and blue still under 65,535: 6 to 45 % of all full star images. The rest had red or blue at its top, with green full or still rising; on the S50 Pro we found stars with red at 65,535 and green at 45,000, under its ceiling of 49,808.

full in green alone red or blue at its top too
Every star image that was full in at least one color (stars brighter than Gaia G 13.5 on 40 frames a night), split by which colors were full. The number on the right is how many of them a test for “any pixel at 65,535” lets through as unsaturated. Hover a row for the other common fixed levels.

This is why it matters beyond looks. Any tool that decides “full” by looking for 65,535 lets every green-only full star through as good data. Over our nights that was 251 of 1,576 full star images on the S50 Pro, 94 of 465 on our S30 Pro and 193 of 543 on the S50s. On the S50 with no color scaling, a 65,535 test missed 85 of 94, because no color there ever reaches 65,535. Lower fixed levels, such as 60,000 or 85 % of 65,535, still miss many: green's ceiling isn't one number. Our own tools made exactly this mistake. Most of them now use each color's measured ceiling; the rest are being switched.

Measured

Below the ceiling: does brightness stay honest?

Each star's measured peak divided by the peak Gaia's catalog predicts, grouped by how close the prediction is to that color's ceiling. 1.0 means the camera recorded exactly what it should. Past the ceiling the ratio has to fall (dashed line); below it, it should stay at 1.0.

S30
S30 Pro
S50
S50 Pro
green red blue a straight response that stops at the ceiling

Across: the predicted peak as a share of the ceiling, in bands (0.1–0.4, 0.4–0.7, 0.7–0.9, 0.9–1, 1–1.25, 1.5–3). Each point is the median over the model's nights (the S50 panel includes the S50 with no color scaling). Hover a panel for the values and star counts.

A common worry is that a sensor's response bends over before it fills, so that the brightest unsaturated stars read too faint. Up to 0.9 of the ceiling, green stayed within 5 % of its prediction on the S30, S30 Pro and S50 (0.95 to 1.01). Red and blue scattered more, 0.81 to 1.12 in single bands, mostly a little low, with fewer stars per band. Past the ceiling every color fell as clipping says it must.

The last band before the ceiling (0.9 to 1) is less clear. On our S30 Pro it read 0.90 in green and 0.81 in red; on the S50s green read 0.98; the S30s had too few stars there. That could be a real bend just under the ceiling, or stars that were already over the ceiling, since the prediction for any one star scatters by several percent. These nights can't tell the two apart.

The S50 Pro is different, and we don't know why. From 0.4 of the ceiling up, all three colors read lower than predicted: green and red by about 5 to 8 %, blue by 10 to 23 %. Green's last band before the ceiling came back to 1.03. Red and blue there stop at 65,535 because the file runs out of numbers, not because they reached the shared limit, so this isn't a gentle approach to full, and it isn't something only green does. It's one unit on one night, so we treat it as an open question, not a property of the model.

What to do about it

Treat a pixel as full once green is full.

If your stacking or photometry software lets you set the camera's saturation level, set it to your green ceiling, not 65,535, and apply it to all colors. A pixel whose green has reached its band is full, even if red and blue in the same spot read lower. On units with normal color handling, we measured green ceilings of 49,808 to 54,288.

Find your own green ceiling.

Open a raw frame with some bright stars in a program that can split the raw color channels (showing the red, green and blue pixels separately, before debayering), and look at green's histogram near the top. Full green pixels bunch up in a band 1,000 to 5,000 codes wide below 65,535; the bottom of that band is your ceiling. Check again after a firmware update; on one unit it moved by about 1,000 codes. If you can't measure it, about 49,000 was below every ceiling we saw on 8 units.

Don't trust the color of a saturated core.

Whatever tint a full star core shows, purple or green, it came from the camera's ceilings and your software's balance, not the star. One white level at green's ceiling for all three colors makes full cores come out white in pictures. Otherwise the usual cures apply: shorter exposures for bright stars blended into the long ones, or neutralizing or desaturating the cores of saturated stars. For star colors you want to rely on, use stars whose peaks stay below the ceiling.

For brightness measurements, stay under 40,000.

For photometry (variable stars, transits, comparison stars), keep the peaks you measure under about 40,000. That's 0.80 of the lowest green ceiling we measured, and on three of the four models the response was straight up to there. On the one S50 Pro we measured, until its shortfall is understood, check your result with fainter comparison stars too, peaking under about 0.4 of the ceiling (about 20,000).

Reject, don't repair.

A star with a full pixel in any color has lost light in that color and has the wrong color balance. Leave it out of brightness and color measurements rather than trying to correct it.

Fair to the Seestar

Nothing here is a defect. Scaling red and blue up in the camera is a normal design choice: it makes the colors come out roughly balanced straight from the camera, and many cameras do something like it. A green ceiling under 65,535 is simply what that choice does to the brightest pixels, and the files record it faithfully. One of the S50s we measured applies no scaling at all, which shows the scaling is a setting, not a flaw in the sensor. The problem we found was in our own tools, which assumed every color stops at 65,535; any software that makes the same assumption will misjudge saturated stars on any camera that scales its colors.

We measured 8 units of four models, mostly with the IR-cut filter. We can't say how other units or other cameras compare, and we haven't tried.

What was fixed and what was measured

Fixed in advance: 65,535, the largest number a 16-bit file can hold. Gaia's catalog brightnesses and colors, used to predict each star's peak. The method (changed once, see below): code-by-code counts of the top of up to 30 frames a night, with a color's ceiling taken as the bottom of its full band, or 65,535 where it piles; and each star's peak compared with Gaia's prediction, scaled on that frame's stars that peak at 10 to 40 % of the ceiling. The fixed levels tested (65,535, 65,000, 60,000, and 85 and 82 % of 65,535) and the 40,000 photometry cut are the ones our existing tools used; this study checked them rather than chose them. And written expectations before the clip and star steps; the bend test was judged against the earlier one.

Measured: every ceiling, band and pile; each color's gain (measured separately, from how noise grows with brightness); the electron shares; the measured-over-predicted ratios; and every count of stars. Neither: the “watch a core change color” chart is arithmetic on the measured median ceilings, and its star colors and software lift are made up for illustration.

What we expected, and what happened. We expected red and blue to pile at 65,535 on every unit; they did on every unit except the S50 with no color scaling, and the odd S30 on one firmware. We expected green to stop in a band at the shared limit times its color scaling; it did. We expected the response to bend over in the last 10 % or so below the ceiling. Up to 0.9 of the ceiling it didn't on three models; the last band before the ceiling is ambiguous (above), and the S50 Pro's shortfall starts much lower and in every color.

What went wrong, and what's still open