macOS 15.0 (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.
There are four 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.
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. When opening a folder, check "Include files from subfolders" in the open panel. 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.
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 reports the eccentricity of the median star candidate.
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.
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.
No correction is applied, and none is needed. Empirical tests with both narrowband and broadband OSC images show agreement with PixInsight Moffat4 within ±10% without any Bayer scaling factor.
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 → Keyboard.
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 → Keyboard:
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, star count, or quality score. 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 shows FWHM, eccentricity, SNR, and star count alongside each frame, and enables the session chart. 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 (e.g. "flag all frames with FWHM > 7 px") 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.
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, select the rejected frames, and undo the rejection before you start stacking.
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, 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. No network requests are ever made.
No. FITS Blaster is sandboxed and can only access folders you explicitly open via the open panel or drag & drop. It stores a security-scoped bookmark so it can reopen the same folder without asking again in future sessions.