About this tool

It was built because the person who built it wanted to use it, on a Mac, without installing anything, and the best free tool in the category does not run there.

What it is

A star-trail stacker that runs entirely in your browser. It reads a night of exposures, measures each frame, equalises the sky background frame by frame, combines them with a lighten blend in linear light, fills the gaps between exposures by an amount computed from your own EXIF, removes stuck sensor pixels and masks aircraft, and hands you a 16-bit PNG.

What it deliberately is not

There is no automatic sky mask and no separate foreground stacking. No comet or decay mode, no video export of the build, no batch output, and no machine-learning model anywhere in it. Sequator does several of those things and does them well. It is Windows-only. That is the entire reason this exists — not a claim to be cleverer than anything.

It does read RAW files now — Canon CR2 and CR3, Nikon NEF, Sony ARW, Fujifilm RAF and DNG — and there are three things it will not read, each for a reason worth stating rather than hiding behind “unsupported”. Nikon High Efficiency NEFs (Z 8, Z 9, Z f set to HE or HE★) are intoPIX TicoRAW, a licensed codec: the settings and previews in those files read perfectly and the pixels do not, and no open decoder can change that. Shoot Lossless compressed, or convert to DNG with Nikon’s free NX Studio. Linear DNGs from Samsung Expert RAW and Apple ProRAW have already been demosaiced by the phone, so there is no sensor mosaic left to stack from — which is also why other stackers appear to reject them. Fujifilm GFX frames are 50 to 102 megapixels and are simply too much for a browser tab.

One thing here is genuinely different, and it is small: no other stacker in the category equalises each frame’s background before the blend. It is perhaps thirty lines of code. Any of them could add it tomorrow, and if they do, that will be a good outcome for everyone photographing under a city sky.

Where the numbers come from

Every measured figure on this site comes from real frames, not simulations. The primary set is 38 sixteen-second exposures from an all-sky camera in Copenhagen, published on Zenodo as record 3736793 under CC-BY-4.0; the replication is 35 frames from the same instrument on a different and much worse night, record 3754088, also CC-BY-4.0. The noise, the sky gradient, the stuck pixels and the streetlight in that data are all real. Only the injected test stars are synthetic, and they are placed on trajectories copied from real tracked stars in the same frames.

The honest limit: that is one camera, one site, two nights. The direction of the result generalises — sky levels drift everywhere — but the size of the gain will differ on a digital SLR under a darker sky, and that has not been measured yet. Which is why the tool measures your drift and shows you your files side by side instead of quoting a headline number at you. The full measurement.

Why it is free

There is nothing to sell. The image is produced inside your own tab and is already in your hands before any payment step could exist, so a paid version would have to be a worse free version. There is no advertising either: this is a page that holds several hundred megabytes of image data and runs a worker for minutes, and an ad network on top of that would make it slower for everyone in exchange for approximately nothing.

No account, no email address, no newsletter. If it stops being useful, close the tab.

What it is built from

Plain JavaScript with no framework, no bundler runtime and no third-party image library. The PNG and TIFF decoders, the EXIF reader, the background model and the PNG encoder are all written for this site, because browsers will not decode a TIFF at all and will silently reduce a 16-bit PNG to 8 bits on the way to a canvas. Nothing on the page is fetched from anywhere except this domain and one cookieless analytics collector.

The RAW decoder, and the source we owe you

There is exactly one piece of code here we did not write: LibRaw 0.22.2, compiled to a single 803 KB WebAssembly module, which parses RAW containers and hands back the sensor’s own values. It is fetched only when you actually drop a RAW file. The demosaic — the step that turns one colour per photosite into a colour picture — is ours; LibRaw’s own development pipeline is never called, because it would apply a white balance, a tone curve and an interpolation nobody here chose.

LibRaw is dual-licensed and we have taken it under the CDDL-1.0, which requires us to publish the exact source we compiled, the licence text, and a way for you to reach both. Not a link to somebody else’s download page — these files, the ones this build was made from:

The GPL demosaic packs are deliberately absent and the build refuses to run if they appear, because publishing GPL files inside a CDDL distribution is the mistake that exclusion exists to prevent.

Getting in touch

If a sequence will not stack, say so — you do not need to send the photographs, just the camera, the file format and what the page said.