What it can read, and what has actually been through it
Star Trail Stacker reads JPEG, PNG, TIFF and WebP everywhere, Bayer RAW through LibRaw compiled to WebAssembly, FITS in deep sky and SER in planetary — and the table below says, for each one, whether a real file from a real instrument has been through it or only a fixture this repository built.
Why there is a column for that at all
A support list is easy to write and easy to be wrong about. Code that accepts a file extension is not the same thing as a file of that kind having been read, and the gap between the two is where people lose an evening. So every row below says which of three things is true:
- A real file. Something photographed by an instrument outside this project, with a licence and a source, has been through this path and the result was checked.
- A fixture. This repository builds the file itself, on every run of the tests, and reads it back. That catches a decoder that breaks; it cannot catch a camera that writes something we did not imagine.
- Never run. The code accepts it and nothing has ever been read. It may work. Nobody here knows.
Every file type, and what has been through it
| You give it | What happens | Verified on |
|---|---|---|
| JPEG | Decoded by the browser, then treated as 8-bit samples. | A real file. Ten all-sky frames from Yebes Observatory (2021, credited), and single frames from a Nikon D300, a Canon EOS 5D Mark II and a Samsung NX1000, all under Creative Commons licences. Fixtures as well, on every test run. |
| PNG | Decoded by this site's own reader, 8 and 16 bit. | A real file. The 925 tiles of an independently published streak corpus. Fixtures as well, on every test run. |
| TIFF | Decoded by this site's own reader. | A fixture, on every test run, in a real browser. |
| WebP | Decoded by the browser. | A fixture, on every test run, in a real browser. Measured to cost 8.6% of registration accuracy against a lossless source, which is the reason to prefer one. |
| DNG | LibRaw compiled to WebAssembly, 803 kB, fetched only when a RAW file is actually dropped. The mosaic is kept rather than demosaiced. | A fixture, on every test run — but fixtures built to carry real bodies' quirks: the exact black level a Canon EOS R6 Mark III reports, the Fujifilm case where black is zero and so is every per-channel value, a 6×6 X-Trans array, and an already-demosaiced linear DNG of the class Samsung and Apple write. No DNG written by a real camera has been through it here. |
| CR2, CR3, NEF, ARW, RAF | Recognised as RAW containers before TIFF — the order matters, because all of them are valid TIFF at the byte level and a TIFF decoder would happily stack a night of 160×120 thumbnails without an error. Then handed to the same LibRaw build. | Never run. Not one file of any of these five has been read by this project. LibRaw supports them and they are accepted here on that basis alone. |
| FITS (deep sky) | Read by this site's own reader, including 16 and 32 bit and the HIERARCH keyword convention. | A real file. Twelve exposures of NGC 2392 taken with EFOSC2 on the ESO 3.6 m at La Silla, from the public science archive. |
| SER (planetary) | Uncompressed MONO, RGB or declared-BGR only, with an explicit region and reference frame. | A real file. A lunar capture from the PlanetarySystemStacker sample set. |
Which cameras the aircraft search has actually been measured on
Reading a file and finding a trail in it are different claims. The trail search has been measured against labels drawn by other people on frames from a Nikon D300, a Canon EOS 5D Mark II, a Samsung NX1000, the Yebes all-sky camera, and the Sony and Nikon bodies behind an independently published corpus of 4,649 frames.
That is five or six bodies, and it is not many. The trained second opinion in particular was fitted on a corpus that is essentially two bodies under one photographer's skies, and nothing measured so far says whether it learned trails or learned those sensors. It is stated on its own receipt for the same reason it is stated here.
Lenses
Distortion figures come from the Lensfun database, matched on the maker and model your files record. Rokinon, Bower and Samyang are the same lenses under three names and are matched as one. If your lens is not in the database the tool says so rather than guessing a correction — a wrong correction is worse than none, because it moves every star by a measured-looking amount.
What it refuses, and why a refusal is the good outcome
A tool that guesses when it does not know produces a picture that looks right and is wrong, and nothing downstream can tell. These are refusals rather than failures, and each one names itself:
- Frames of different sizes. A stack combines pixel with pixel. It names the two sizes it found rather than resampling one to the other behind your back.
- An already-demosaiced DNG. There is no mosaic left to stack from, and treating it as one would produce colour artefacts that look like a processing choice.
- An aircraft search with no exposure and no scale. On a star-trail frame a star is a streak, and only its predicted length separates the two. With neither number in the files, the search reports nothing and says why rather than deleting one of them at random.
- A trail it cannot repair. A mask is applied only where a neighbouring frame can supply the sky underneath. With no donor it leaves the trail alone, because a hole is worse than an aeroplane.
- A CFA FITS in the deep-sky Lights. Named, with what to do instead.
What comes out the other end, and which of the two files belongs in which program: taking the result into Lightroom, Photoshop or PixInsight.
Every refusal it can put on your screen, and what each one means: what it refuses to do, and the words it uses.
Try it on your own night
Open the stacker Nothing is uploaded and nothing is installed; the frames are read in your browser.