macOS 15.6 (Sequoia) or later.
It will run, but performance will be significantly lower. FITS Blaster uses Apple's Metal GPU framework for stretching, star detection, and metrics computation. Metal works best on Apple silicon (M1 and later). Intel Macs with integrated graphics lack the GPU memory bandwidth to keep up with large image sets; loading times will be several times slower.
No. FITS Blaster is a native macOS application and uses macOS-specific frameworks (Metal, Accelerate, AppKit). There are no plans for a Windows or Linux port.
No. Image loading, stretching, and all quality measurements work entirely offline. However, FITS Blaster checks for updates once every 24 hours in the background. This is a lightweight check and can be skipped or disabled in the update prompt. If no connection is available, the check is silently skipped and the app works exactly the same.
Yes. Download the M31 sample set (255 MB zip): eight raw 120 s light frames of the Andromeda Galaxy from one night, taken with a one-shot colour camera (ATR2600C, RGGB Bayer pattern) on a William Optics Zenithstar 73.
Unzip it, click Open Folder… in the toolbar, click Open Folder… again in the options popover, and select the FITS-Blaster-Sample-M31 folder. The included README.txt lists how PixInsight's SubframeSelector rates each frame, so you can compare its ranking with FITS Blaster's. Two frames were taken through thin cloud.
There are three ways to load images into FITS Blaster:
FITS files with integer pixel data: BITPIX 8 (8-bit), BITPIX 16 (16-bit), and BITPIX 32 (32-bit). Floating-point FITS (BITPIX −32 or −64) are not supported and will be skipped with an error message. The supported extensions are .fits, .fit, and .fts.
Yes. FITS Blaster installs Quick Look extensions, so Finder shows thumbnails for FITS files, and pressing the spacebar on a file shows a stretched preview. This also works for files the app itself doesn't load: floating-point FITS (BITPIX −32 and −64) and 3-channel colour FITS such as stacked integrations, including files over 1 GB.
FITS files in iCloud Drive only get a thumbnail once they are downloaded to your Mac. To keep thumbnails for an iCloud folder, choose Keep Downloaded on it in Finder.
Not at this time. FITS Blaster is purpose-built for FITS files as used in astrophotography. RAW camera formats (CR3, NEF, ARW, etc.) are not on the roadmap.
In practice, as many as your RAM allows. It has been tested with up to 592 images without issues on a MacBook Air M1 with 16 GB — see the Speed & Performance section below for details.
Yes. Click Open Folder… (or press ⌘O) and turn on Include files from subfolders in the popover. FITS Blaster will scan recursively and display each subfolder as a separate section in the sidebar. By default, calibration folders (FLAT, DARK, BIAS, CALIB) are skipped automatically; you can customise the exclusion list in Settings → Files & Folders.
When FITS Blaster loads images from a session with multiple filters (for example Ha, OIII, and broadband frames in the same folder), it reads the filter name from the FITS header and automatically groups frames by filter in the sidebar. Each group gets its own colour-coded section, making it easy to assess quality separately per filter — a frame that is fine for Ha may still be worth rejecting for OIII.
If no filter information is present in the headers, all frames appear in a single group.
Greyscale loads and renders much faster and is usually all you need for judging star shape, focus, and trailing. FITS Blaster always loads greyscale first, so you can start culling immediately regardless of display mode.
Colour mode debayers OSC (one-shot colour) images and shows them in full colour, which can be useful for checking gradients, satellite trails, or colour artefacts. Colour rendering takes roughly 2–3× longer per image. Both the colour and greyscale versions are kept in memory once loaded, so switching between them is instant.
Mono (greyscale) cameras are always displayed in greyscale regardless of the display setting.
Never. FITS Blaster is strictly read-only. Pixel data is loaded into a separate display buffer; the original files are never written to. The only file operation FITS Blaster performs is moving rejected frames into a REJECTED/ subfolder — and that move is fully undoable.
Reset clears the current session so you can immediately open a new folder. It does not delete or move any files.
Three ways:
The slider and pinch keep the current centre of the viewport fixed as you zoom, so you don't lose your place.
Use the zoom anchor. Click anywhere on the image to pin that point — a small crosshair appears. All subsequent zoom changes (slider or pinch) will keep that point centred in the viewport.
The anchor persists across image navigation. Because all frames in a session cover the same field, the same position points to the same star or region in every frame — useful for comparing star shape across a run.
The Target Background slider sets the desired brightness of the sky background in the displayed image, on a scale from 0.05 to 0.50.
FITS Blaster's automatic stretch (STF) always targets a background level of ~0.25, so the default value of 0.25 produces no visible change. Adjust it when you want a different look:
The value persists across app restarts. This control is analogous to the Target Background parameter in PixInsight's Multiscale Adaptive Stretch.
The Stretch slider is a post-stretch contrast multiplier (0.5×–3.0×, default 1.0×). Increasing it brightens mid-tones and brings out faint detail; decreasing it flattens contrast. Unlike Target Background, it resets when you open a new session.
Each frame receives a coloured badge based on how its metrics compare to the rest of the session:
The badge priority is: trailing stars → focus failure → low star count.
Full Width at Half Maximum — a measure of how sharp (tightly focused) the stars are. It is the diameter of a star profile at half its peak brightness, in sensor pixels. Lower is better: a well-focused session might have FWHM 3–5 px, while a poorly-focused or turbulent frame might be 8–10 px or more.
FITS Blaster fits a Moffat β=4 profile (the same default as PixInsight's SubframeSelector) independently along the X and Y axes, then reports the geometric mean. Results agree with PixInsight Moffat4 within ±10% under typical conditions.
Eccentricity measures how elongated the stars are (0 = perfectly round, 1 = infinitely elongated). A value above ~0.5 usually indicates trailing from poor polar alignment, wind shake, or a mechanical issue.
FITS Blaster fits a 1D Moffat β=4 profile along four directions (0°, 45°, 90°, 135°) and uses the measurements together to reconstruct the true major and minor axes of the PSF ellipse analytically — at any orientation. Eccentricity is then e = √(1 − (FWHM_minor / FWHM_major)²). This approach detects elongation at any angle with equal sensitivity, including diagonal trailing.
Colour (OSC/Bayer) cameras: each star crop is bilinearly demosaicked using adaptive per-channel sky weights before the four-direction Moffat fit. Adaptive weights balance Ha and OIII signal in dual-narrowband images, so the axis-ratio measurement is accurate regardless of filter type. Eccentricity precision on OSC cameras is equivalent to a mono camera.
Signal-to-Noise Ratio — the peak star signal divided by the background noise level. Higher is better. SNR depends heavily on exposure length, sky background, and seeing conditions. It is most useful for comparing frames within the same session rather than between different nights or setups.
PSF Signal Weight is a metric computed alongside the Moffat PSF fit. It measures peak amplitude per unit of sky noise, rewarding both good transparency and good seeing.
The formula is PSF-SW = mean(A) / σ_sky, where A is the background-subtracted sub-pixel peak brightness of each star and σ_sky is the sky noise from Step 1.
Good transparency delivers more photons, raising A. Good seeing concentrates photons into a narrower PSF, also raising A. As a result:
PSF Signal Weight appears in the session chart (PSF·S button), the inspector panel, and the sidebar sort menu. It is a supplemental metric and does not contribute to the composite quality score.
FWHM is not a standardised measurement — every tool makes different choices about the PSF model, fitting method, and unit convention. Agreement within ~10% is normal. The most common causes of larger differences are:
FWHM (px) = FWHM (″) / plate_scale, where plate_scale = 206.265 × pixel_size_µm / focal_length_mm.For frame ranking (the primary use case), absolute accuracy matters less than consistency. FITS Blaster is self-consistent within a session and correlates reliably with actual image quality.
Yes. FITS Blaster reads the BAYERPAT FITS header (also COLORTYP and CFA_PAT) and, when a Bayer pattern is detected, bilinearly demosaicks each star crop to a full-resolution luminance image before fitting the Moffat profile.
FWHM and eccentricity use different luminance weights, chosen to match how each metric is effectively measured by PixInsight SubframeSelector:
FWHM values are at native pixel scale — no scale-back factor is applied.
REJECTED/.REJECTED/ and will not be picked up by a folder scan.The session chart is a horizontal strip showing one dot per frame, in the order they were captured. Dot colour represents the filter group (Ha, OIII, SII, Lum, RGB, and so on) — each filter gets its own consistent colour so you can see at a glance whether a quality problem affects one filter or all of them. You can:
The chart makes it easy to spot patterns — a dip in a single filter's dots usually points to a filter-specific problem, while a decline across all colours suggests clouds, wind, or a tracking issue.
Dot colour — filter group
Each dot is coloured by its filter group. This lets you compare filters side by side and immediately see whether a quality dip is filter-specific or affects the whole session.
| Filter | Colour | Swatch |
|---|---|---|
| L (Luminance) | Grey | |
| R | Red | |
| G | Green | |
| B | Blue | |
| Ha | Deep red | |
| OIII | Teal | |
| SII | Amber | |
| Hβ | Indigo | |
| HO (dual: Ha+OIII) | Magenta | |
| SO (dual: SII+OIII, Askar C2) | Emerald | |
| SHO (tri: SII+Ha+OIII) | Purple | |
| Quad-NB | Gold | |
| Unfiltered | Mid grey |
Dashed horizontal lines — per-group medians
A dashed line is drawn at the median value of the active metric for each filter group. Use it as a reference: dots noticeably above or below the dashed line for their group are outliers worth inspecting.
Dot colour and size — cursor and flagged state
REJECTED/.Both opacity levels are adjustable in Settings → Display → Session Chart Brightness.
Select a frame in the sidebar and press the reject key (default: X). You can customise this and all other key bindings in Settings → Interface.
Yes. Use ⇧+click or ⇧+arrow keys to select a range (highlighted in orange), then press the reject key. The range can be built in the All view or the Flagged view — the behaviour is the same.
The Flagged view (the segmented control at the bottom of the sidebar) shows a curated pile of frames you have collected for closer inspection, without committing to rejection yet. Think of it as a review queue.
Selection model — two independent concepts:
Building the review queue (Flagged view):
Working inside the Flagged view:
The review queue persists when you switch between All, Flagged, and Rejected views, and is cleared only when you open a new folder or use Deselect All.
They are moved into a REJECTED/ subfolder inside the folder they came from. No files are deleted. You can undo a rejection at any time.
It depends on the Single key reject/undo (toggle) setting in Settings → Interface:
In either case, if the REJECTED/ folder becomes empty after an undo, it is removed automatically.
Use the sort dropdown in the sidebar toolbar to choose between filename (the default, reflecting capture order) or any quality metric: FWHM, Eccentricity, SNR, Stars, Sky BG, PSF Signal, or Score. Rejected sorts rejected frames to one end. The up/down arrow button next to it reverses the sort direction. Sorting by quality score with the worst frames at the bottom makes it quick to select and reject the tail of the list as a group.
Simple mode hides all numeric metrics and shows only the visual quality badge. It is useful for a quick visual pass or for users who prefer not to interpret numbers.
Geek mode computes the quality metrics, shows them in the inspector panel on the right, and enables the session chart. For a compact row of metric values above the chart, turn on Show metric chips above session chart in Settings → Display. Toggle between modes with the configured key (default: G) or the toolbar button, which shows the current mode name (Simple or Geek).
Auto-Flag lets you set quality thresholds and preview how many frames match before applying. The matching frames are added to the Flagged view so you can inspect them individually and decide which ones to actually reject. Access it from the toolbar.
Thresholds work in one of two modes:
Available criteria: FWHM, eccentricity, star count, SNR, sky background, PSF Signal Weight, and (absolute mode only) quality score. Sky background and PSF Signal Weight are off by default; they are the most useful criteria for catching haze, thin cloud, and moonlight, which barely change star shape.
Point your stacking tool (PixInsight, Siril, AstroPixelProcessor, etc.) at the same folder you opened in FITS Blaster. Rejected frames have been moved to a REJECTED/ subfolder and will not appear in a normal folder scan. No additional steps are needed — your stacking tool will see only the frames you kept.
If you change your mind, reopen the folder in FITS Blaster with Include REJECTED folder turned on in the Open Folder popover, select the rejected frames, and undo the rejection before you start stacking.
Yes. Click Export… in the toolbar to save the loaded frames as a file. The export sheet lets you choose:
status column (kept / rejected).In Geek mode the export includes FWHM, eccentricity, SNR, star count, PSF Signal Weight, and score for each frame. Numbers always use a decimal point, whatever your region settings, so the files open correctly in any spreadsheet. Set your defaults in Settings → Export; changes in the export sheet apply to that export only.
Tests run on a MacBook Air M1, 16 GB, images on internal SSD. FITS Blaster was restarted before each test.
592 colour images (IMX571 OSC), 51.9 MB each, 30.72 GB total:
| Mode | Time | Peak memory |
|---|---|---|
| Greyscale + Geek mode | 62 s | 1.9 GB |
| Greyscale + Simple mode | 28 s | 1.2 GB |
| Colour + Geek mode | 121 s | 2.2 GB |
| Colour + Simple mode | 82 s | 2.2 GB |
Memory figures are peak during loading. In greyscale modes the footprint drops significantly once loading completes (to ~655 MB for Geek, ~590 MB for Simple) as intermediate GPU buffers are released.
290 greyscale images (IMX585 mono), 16.8 MB each, 4.88 GB total:
| Mode | Time | Memory |
|---|---|---|
| Greyscale + Geek mode | 15.4 s | 346 MB |
| Greyscale + Simple mode | 4.8 s | 318 MB |
You can start working immediately once loading begins — you do not need to wait for the entire set. In colour mode, FITS Blaster renders the full set in greyscale first so you can start culling straight away; both versions are kept in memory so switching between them is instant.
REJECTED/.If you only want a quick visual pass without metrics, simple mode loads faster but the session chart is not available.
Almost. Arrow keys navigate; ⇧+arrow extends the orange range selection; ⌘A / ⌘D / ⌘I select all, clear, or invert the range; F toggles the flag on the current entry or range; D deflags everything; your configured reject key rejects or toggles. The only things that require the mouse are drag-selecting a range in the chart and clicking filter pills.
Yes — FITS Blaster holds no locks on your files. However, avoid undoing rejections while a stacking tool is actively reading the same folder, as moving files mid-stack may confuse the stacking tool.
Yes, in the version downloaded from this website (not the Mac App Store version). Run the app's executable with a folder path, and FITS Blaster measures every frame without opening a window and writes a CSV file with the results:
"/Applications/FITS Blaster.app/Contents/MacOS/FITS Blaster" ~/Astro/M31/LIGHT
The folder path must start with / or ~. By default the CSV is written to frames.csv inside that folder. Progress goes to the terminal, and the path of the CSV is printed when it's done, so you can use it in scripts. Your FITS files are never moved or changed.
Add filter criteria to export only the good frames. As in Auto-Flag, thresholds are relative to the filter group's median by default:
"/Applications/FITS Blaster.app/Contents/MacOS/FITS Blaster" ~/Astro/M31/LIGHT -f 1.5 -e 0.5 -p 0.5 -o ~/Desktop/m31-keepers.csv
This keeps frames with FWHM at most 1.5× the median, eccentricity at most 0.5, and PSF Signal Weight at least half the median. The most useful options:
-o output file · -S include subfolders · -r include the REJECTED folder (marked status=rejected)-m rel|abs threshold mode · -f FWHM · -e eccentricity · -n stars · -s SNR · -b sky background · -p PSF Signal Weight · -q score (absolute mode)-P rel|abs path style · -H DATE-OBS,FILTER,… FITS header columnsRun it with --help for the full list. For the beta, use FITS Blaster Beta.app in the path. If you get “permission denied” for a folder in iCloud Drive, give FITS Blaster Full Disk Access in System Settings → Privacy & Security → Full Disk Access.
Yes, completely free. No subscription, no paywall, no frame limit. All features — metrics, Auto-Flag, session chart, subfolders — are available to everyone.
If FITS Blaster saves you time, a small donation via Ko-fi is very much appreciated. It helps cover the cost of the Apple Developer account and motivates continued development.
Open an issue on the GitHub Issues page. A short description of what happened, what you expected, and which macOS version you're on is all that's needed.
Use the feature request template on GitHub. Describing the problem you're trying to solve (rather than just the solution) makes it much easier to evaluate.
No. All processing happens on your Mac. Your image files never leave your device.
None. FITS Blaster does not collect analytics, telemetry, or usage data of any kind. The only network request is the daily update check in the version downloaded from this website, which fetches the list of available versions and sends nothing about you or your images. The Mac App Store version makes no network requests at all; the App Store handles its updates.
No. FITS Blaster only reads the folders you open, and the only change it ever makes on disk is moving rejected frames into, and back out of, a REJECTED/ subfolder.