114 frames, 30 seconds each, one image.

OriginStack stacks and processes astrophotography frames from a Celestron Origin or any colour camera. It runs on your own computer, needs no account, and only goes online to look up a target name it does not recognise or for optional steps such as plate solving.

Windows 10 or 11, 64-bit, free and MIT licensed. The installer is not code-signed yet, so SmartScreen may warn you: choose More info, then Run anyway.

The Omega Nebula after stacking 114 frames and processing: bright red gas with dark lanes against a dense star field. One 30-second frame of the same field, stretched to be visible: grainy, with the nebula faint against a noisy purple sky. One 30-second frame, stretched 114 frames, stacked and processed

A night of frames in under two minutes

The Omega Nebula, 114 frames, on an 8-core desktop: 113 seconds from the raw files to a finished image. The red block is the part that makes the picture look good; the rest is getting 114 frames to line up.

  • Load, calibrate, score24.8 s
  • Register8.2 s
  • Align and stack20.0 s
  • Finish the image51.3 s
  • Disk and setup8.8 s

Load, calibrate, score

Each frame is corrected with your bias, dark and flat, turned from the sensor's colour mosaic into an image, and scored for sharpness and noise. Frames that are clearly bad are dropped.

Register

Frames are lined up to a fraction of a pixel, including the slow rotation of the field that an alt-az mount like the Origin produces.

Align and stack

The aligned frames are combined with outlier rejection, so satellite trails, hot pixels and cosmic rays drop out instead of averaging in.

Finish the image

Background gradients, colour and noise are handled, then the result is stretched to be viewed. The FITS file it saves stays linear, ready for any further work.

Frames are processed one at a time, so 500 frames need about the same memory as 50. Temporary files take roughly 100 MB of disk per frame while the run is going.

Watch it work, or skip the settings

Point the app at a folder of frames and press Run. Every option is one form, and the defaults choose settings for your target. These are real screens from stacking the Omega frames above.

The OriginStack window during a run: settings on the left, three of four pipeline phases marked done, the log below, and on the right a preview of the linear stack of the Omega Nebula with a strip of frame thumbnails and a table of per-frame scores.
Part-way through the Omega run. Phases 1 to 3 are done, the linear stack is already in the preview, and the finishing pass is starting.
The OriginStack window early in a run, with a folder chosen, its frame counts listed under it, the log, and a table of frame scores filling in.
Early on, while frames are scored. Pick a folder and the app counts your lights, darks, flats and bias frames straight away. Each frame's score, signal-to-noise, star count and sharpness land in the table as it finishes.
The preview and frame panels after the run finished, showing the final image of the Omega Nebula.
When it finishes you can zoom and pan the result, or wipe between the linear stack and the finished image.
The Additional options panel with Expert options ticked, listing registration and stacking controls such as banding removal and distortion model.
Around a hundred more options sit under Additional options. The rarer ones stay hidden until you tick Expert options.

How it compares with Siril and DeepSkyStacker

Same frames, same bias, dark and flat, one machine, each tool on default-style settings. Three Celestron Origin sessions: the Omega Nebula (114 × 30 s), the Sunflower Galaxy (158 × 20 s) and the Sculptor Galaxy (532 × 10 s).

OriginStack first, Siril second. Stack only means without OriginStack's finishing steps, which Siril does not have.
SessionStack onlyOriginStack, finished imagePeak memoryStar width
Omega, 114 frames57 s / 72 s110 s16.5 / 8.1 GB4.40 / 4.56 px
Sunflower, 158 frames106 s / 81 s159 s16.9 / 8.7 GB3.56 / 3.60 px
Sculptor, 532 frames258 s / 150 s270 s16.7 / 11.2 GB2.78 / 2.95 px

Star width on the same stars (smaller is sharper)

Omega

OriginStack
4.40 px
Siril
4.56 px
DeepSkyStacker
4.83 px

Sunflower

OriginStack
3.56 px
Siril
3.60 px

Sculptor

OriginStack
2.78 px
Siril
2.95 px
A Gaussian fit to each of up to 400 bright, unsaturated, isolated stars, at the same positions in both stacks, each on its own pixel grid.

What the numbers say

Sharpness: OriginStack is as sharp or sharper. Its stars are 3% narrower than Siril's on Omega, level on Sunflower and 6% narrower on Sculptor. It also used every frame (114, 158 and 532 of 532), where Siril used 111, 157 and 525.

Speed: it depends on the session. OriginStack stacks Omega faster and the two larger sessions more slowly (1.3 times as long on Sunflower, 1.7 on Sculptor). Times move by up to 15% between runs: Siril's Omega ranged from 53 to 72 s across our runs.

Noise: Siril is still cleaner. OriginStack's per-pixel noise is 0.99 to 1.19 times Siril's on Omega, 1.09 to 1.20 on Sunflower and 1.05 to 1.33 on Sculptor, so about level in green and up to a third higher in red and blue. Most of the red/blue gap traces to cosmic-ray and hot-pixel spikes: the debayer filter smears a single-pixel spike further in red/blue than in green, and large sessions skip per-frame cosmic-ray detection in favour of stack-level rejection, which runs too late to fully catch it. Forcing per-frame detection back on closes most of the gap (11 to 16% quieter, measured) but softens stars slightly on shorter sub-exposures and adds 39 to 75% to the stacking time, so it's opt-in rather than the default.

Memory does not grow with the session. OriginStack stayed at 16.5 to 16.9 GB from 114 to 532 frames, set by the number of workers (-j lowers it), while Siril's grew from 8.1 to 11.2 GB. Siril uses less at these sizes. Peak temporary disk was about the same for both, at 18 to 59 GB.

DeepSkyStacker took 14 min 8 s on Omega, produced stars softer than both others, and at its default settings left hot-pixel streaks and a few misregistered frames.

OriginStack's case is what comes after the stack: it finishes the image in the same run with no setup, explains the night with diagnostics, runs fully offline if you ask, and does the rest the other tools leave to you. On a plain stack it is now competitive on sharpness and behind Siril on noise and, for larger sessions, on time. These numbers replace earlier ones: an earlier version of this page overstated sharpness because of how stars were chosen for measurement, and OriginStack's stars were then genuinely softer than Siril's until we found a hot-pixel filter that was clipping star cores, by switching steps off one at a time, and fixed it. Three sessions from one camera are a small sample, and both tools were left at default-style settings. tools/bench_vs_siril.py repeats all of this on your own frames.

Install it

Windows installer

Download the setup file from the latest release and run it. It installs for your user only, adds a Start Menu entry and an uninstaller, and needs no Python.

Prefer the zip? Use Extract All first, then run OriginStack.exe from the extracted folder. Running it from inside the zip fails.

Linux bundle

Download OriginStack-<version>-linux-x64.tar.gz from the latest release, extract it and run the installer. It installs for your user only, adds an application-menu entry, and needs no Python or root.

tar xzf OriginStack-*-linux-x64.tar.gz
cd OriginStack-*-linux-x64
./install.sh

It needs glibc 2.35 or newer (Ubuntu 22.04, Debian 12, Fedora 36 and later) and has had less real-world use than the Windows build. Run ./install.sh --uninstall to remove it.

From source

On Windows, Linux (tested) or macOS (not tested):

git clone https://github.com/hd152/originstack
cd originstack
pip install -r requirements.txt
python desktop_app.py

The command line does the same job: python originstack.py -d lights/ -o stacked.fits. An optional Rust extension speeds up the heavy steps and falls back to plain NumPy without it.

What else it does

Calibration with bias, dark and flat frames, hot-pixel and satellite-trail removal, sigma-clipping and other outlier-rejecting stacking methods, optional drizzle, background and gradient removal, noise reduction and deconvolution, plate solving, colour calibration, photometry and a comet mode. If you are looking for a free alternative to DeepSkyStacker or Siril for Celestron Origin and other one-shot-colour astrophotography data, this is built for that.

What it reads

Celestron Origin FITS, and colour-camera frames as FITS, camera RAW (Canon, Nikon, Sony and others, needs rawpy), TIFF and XISF. SER video is supported for planetary work. Mix formats freely in one folder.

Want it fully offline? Pass --offline, or tick it in the app, and OriginStack makes no network requests at all.