What it can read, and what has actually been through it

Choose the mode first: photo modes accept rendered images, selected modes accept governed camera RAW, Deep Sky and Comet have strict scientific FITS paths, and Planetary accepts the named SER and AVI families below. Nothing is accepted only because its filename looks familiar.

On this page
Diagram: RAW, raster, FITS and SER families all read on your own device
Every family is inspected on your own device; the tables separate what works now from a broader compatibility promise.

Formats by mode

Accepted inputs in the current product. Detailed conditions and named refusals follow below.
ModeAccepted nowImportant limit
Star trailsJPEG, PNG, TIFF, WebP and governed Bayer RAW familiesOne homogeneous sequence; named RAW encodings are refused rather than guessed.
NightscapeRendered images and governed camera RAWA fixed tripod and an explicit sky/ground region are required.
Deep skyRendered images, governed camera RAW and strict FITS LightsFITS must satisfy its explicit calibration, image-plane and registration contract.
CometJPEG, PNG, TIFF, WebP and confirmed calibrated scientific-linear FITSCamera RAW and calibration roles are not accepted in Comet yet.
Calibration labGoverned RAW calibration frames and the named master-frame pathRoles and compatible groups are explicit; filenames never assign a role.
PlanetaryUncompressed SER, bounded AVI/DIB and AVI/MJPEG, and MP4/MOV with one H.264 or HEVC video trackMP4/MOV is decoded by the browser (HEVC only where it has the decoder); fragmented MP4, WebM, AV1, VP9 and 10-bit video are refused by name.

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. This shrank on 2026-08-19 when a real Sony ARW night was first read, and again as camera-created CR2, CR3, NEF, ORF, RW2 and PEF files were; no container this page accepts is left in it.

Every file type, and what has been through it

Read from the code that accepts these files and the corpora and fixtures that have been through it, on 2026-08-30.
You give itWhat happensVerified 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 phone writes no preview the tool can read, so each frame is looked at from its own sensor data before the stack, which reads the file twice. Real phone sequences, stacked. Three night runs of 50 frames each from a realme 12+ 5G phone on a tripod, at 30 and 20 seconds a frame, stack whole in Star trails in Chromium, Firefox and WebKit at the full 4096×3072 mosaic, turned upright as the phone recorded them. The three browsers compute the same pixels. In Deep sky, all 50 Lights of one run register and integrate in all three browsers. An 8-frame burst from a Nexus 6P stacks in Star trails; Deep sky refuses it, because its 0.1-second frames hold too few stars to register. These are phone DNGs, a 10-bit colour mosaic, not the DNG a camera body writes: five of those, from a Leica M9, a Pentax K-7, a Ricoh GR, a Samsung GX10 and a Blackmagic URSA 4K, have only bounded Node pixel proof, one file at a time. The phone's own lens-shading correction, the four gain maps each of these files carries, is applied to every frame before anything else reads it. It lifts a corner of a frame from 28–43% of the sky the centre records to 53–79%, so the corners are brighter but not flat. Synthetic fixtures still cover 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. The frames are “MobilTelesco: A Smartphone based Astrophotography Dataset” by Shantanusinh Parmar (2025), via Zenodo, licensed under CC BY 4.0, and the HDR+ Burst Photography Dataset by Samuel W. Hasinoff and colleagues at Google (SIGGRAPH Asia 2016), licensed under CC BY-SA 4.0.
ARW (Sony) Recognised as a RAW container before TIFF — the order matters, because it is a valid TIFF at the byte level and a TIFF decoder would happily stack a night of thumbnails without an error. Then handed to LibRaw. A real file, and three tracked nights. 380 frames from a Sony A7C (ILCE-7C), a genuine 15-second night sequence at ISO 5000 on a 24 mm f/1.4, every one decoded to its full 6024×4024 mosaic with no error — a body in no other corpus here. Three tracked Sony nights register every Light and integrate in Deep sky: twelve 177 s Lights of the Milky Way from an A7R, twelve 297 s Lights of M42 from an A1 on a guided telescope, and sixteen 30 s Lights of M8 and M20 from a 61-megapixel A7R IV, at the half-size 3681×2460, 4330×2892 and 4784×3188 a browser admits. The A7R night's own 24 bias frames, 18 darks and 16 flats calibrate it, although its flats were taken with the camera held another way and its lens records no aperture. With its 3 darks the A1 night needs 2.27 GB, and WebKit calibrates it as well as Chromium. Its twilight flats are refused by name, because the night has no bias or dark-flats to correct them with. Data: Wei-Hao Wang, used with his permission.
CR2, CR3, NEF Recognised as RAW containers before TIFF, the same way, and handed to the same LibRaw build. A dark counts as the Lights' exposure when it is within 2% of it, as a camera's bulb timer records it. A photosite the flats never lit, such as a masked strip inside the frame a camera declares, is left as the Light recorded it rather than divided by an empty flat, and the result says how many there were. Real matrix, and whole nights. Camera-created CC0 CR2, CR3 and NEF files decode to finite non-empty pixel planes. Twenty-three 60 s Lights of Orion rising over the Mauna Kea observatories, from a Canon EOS 5D Mark II on a fixed tripod, stack whole in Star trails at the full 5634×3752 mosaic, with and without the night's own 22 darks. Bias frames from another 5D Mark II at ISO 1600 are refused by name against these ISO 800 Lights. This body's two focal-plane resolutions disagree by 1.5%, so its image scale is taken from its published 6.41 µm pixel pitch instead. The aircraft search now runs on its files: on this night it finds three lines and removes none, keeping the one that runs along the stars for review. The camera faced about 87° from the sky's pole; the image scale says such a frame turns at 0.05× the sidereal rate, as these stars do, so that slow turn about an axis far outside the frame is taken as the sky's and the trails' gaps are filled about it. Three tracked Nikon nights register every Light and integrate in Deep sky: nine 305 s Lights of the Milky Way and twenty 183 s Lights of the California Nebula from a 36-megapixel D800, and ten 180 s Lights of Scorpius from a D810A, at the half-size 3689×2490 and 3690×2464 a browser admits. Each night's own bias frames and darks calibrate it, and the first night's flats as well. In Firefox and WebKit the 5D Mark II night in Star trails and the D810A night in Deep sky give the same pixels as in Chromium. Data: Wei-Hao Wang, used with his permission.
RAF (Fujifilm) Recognised as a RAW container before TIFF and handed to the same LibRaw build. The capture time, exposure, focal length and sensor size are read from the camera's own JPEG inside the file, so a GFX on a lens has a measured image scale. A medium-format GFX is read like any other Bayer camera: whether a night fits is decided by the browser's memory budget, not by the camera's name. A GFX100S records the full 16-bit range, so its colour balance lowers all three channels together rather than clipping its brightest stars. Two whole GFX nights. Twenty 240 s Lights of Orion and eighteen of the winter Milky Way from a Fujifilm GFX 50R on a tracking mount each register and integrate in Deep sky in Chromium, Firefox and WebKit, at the half-size 4140×3104 a browser admits of its 8280×6208 mosaic, and the three browsers compute the same pixels. Sixteen Lights of NGC 7000 from a 102-megapixel GFX100S on a guided telescope register 16 of 16 in Deep sky in Chromium and Firefox, at the half-size 5831×4373, and the two browsers compute the same pixels. WebKit cannot hold that night at half: it needs 2.98 GB where WebKit allows 2.5 GB. So it offers a quarter, each output pixel a 4×4 group of photosites averaged by colour: at 2915×2186 the night needs 1.16 GB and registers 16 of 16 in WebKit. With its own 13 darks the GFX 50R Orion night needs 2.47 GB, and Chromium and WebKit calibrate it, register 20 of 20 and compute the same pixels. With its darks the GFX100S night is refused at half: built photosite by photosite, its masters alone need 3.63 GB. At a quarter they are built in the 4×4 bin instead, and the night then needs 1.68 GB, and Chromium and WebKit calibrate it, register 16 of 16 and compute the same pixels. The only CC0 RAF, a legacy Fujifilm S5000, is still refused by name as non_rectilinear_geometry before pixel access. Data: Wei-Hao Wang, used with his permission.
ORF (Olympus, OM System) Recognised from its own bytes before TIFF and handed to the same LibRaw build. The capture time, exposure and focal length are read from the file and the sensor size from the Olympus maker note, so the gap between frames and the image scale are measured rather than assumed. Real files, stacked. Two camera-created CC0 pairs, from an Olympus E-M1 Mark II and an E-M10 Mark IV, each stack two frames at a time in Chromium, Firefox and WebKit at the full 5240×3912 and 5200×3904 mosaic.
RW2 (Panasonic) Recognised from its own bytes before TIFF and handed to the same LibRaw build. The capture time and exposure are read from the file and the 35 mm equivalent from the camera's own embedded JPEG, so the gap between frames and the image scale are measured rather than assumed. Real files, stacked. Two camera-created CC0 pairs, from a Panasonic Lumix GH5S and a Lumix S5 IIX, each stack two frames at a time in Chromium, Firefox and WebKit at the full 3704×2776 and 6008×4008 mosaic.
PEF (Pentax) Plain TIFF at the byte level, told apart from a TIFF by the maker LibRaw reads, and handed to the same LibRaw build. Its capture time, exposure and 35 mm equivalent are ordinary EXIF, so the gap between frames and the image scale are measured. A camera on a telescope records no focal length, and the image scale is then left unknown rather than assumed. Real files, stacked, and a whole guided night. Two camera-created CC0 pairs stack two frames at a time in Chromium, Firefox and WebKit: a Pentax K-3 Mark III at its full 6224×4160 mosaic, and a 36-megapixel K-1 Mark II at the half-size 3688×2466 its memory budget admits in a browser, binned from the real mosaic rather than read from a preview. One night from a Pentax 645Z on a guided telescope goes through whole. Twenty 300 s Lights of M42 and twenty of NGC 7822 each register 20 of 20 in Deep sky in Chromium, Firefox and WebKit, at the half-size 4192×3104 a browser admits of its 8384×6208 mosaic, and the three browsers compute the same pixels. Twenty 20 s Lights stack in Star trails in the same three browsers. The photographer logged an airplane in two of the NGC 7822 Lights: a plain Mean keeps both trails, at 11 and 23 times the stack's noise along their paths, and Automatic integration leaves neither above half the noise. With the night's own 45 bias frames, 5 darks and 25 flats the NGC 7822 Lights need 2.38 GB, and Chromium calibrates them and registers 20 of 20. The M42 Lights' darks are refused by name: two of the thirteen ran 356 s and 347 s against 300 s Lights. Data: Wei-Hao Wang, used with his permission.
FITS (deep sky and comet) 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.
AVI (planetary) Bounded AVI/DIB and AVI/MJPEG paths only. The codec is declared and validated; nothing is downloaded to decode it. Browser and repository evidence. Unsupported codecs, OpenDML and audio are refused by name.
The built nine-row format evidence matrix distinguishing real files, repository fixtures and formats that have never been run
Deterministic built evidence-matrix screenshot — not a compatibility or performance benchmark. Every row retains the page's current evidence class. A decoder listed here is not a promise about every camera that can write that container.

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. Which browser matters less than you might think, and the differences are listed: which browsers it runs in, and what that means on a Mac.