Complete User Guide

OpenSAK

The open-source geocache management tool for Windows, Linux, and macOS.

Version 1.22.0-beta.2  ·  MIT Licence  ·  github.com/OpenSAK-Org/opensak
OpenSAK main window showing the cache list, cache detail panel, and OpenStreetMap view
The main window: cache list (top), details and map (bottom) — all resizable.

01Installation

Linux (Recommended: Automatic Installer)

Paste this single command into a terminal — it handles everything automatically:

curl -fsSL https://raw.githubusercontent.com/OpenSAK-Org/OpenSAK/main/scripts/install-opensak.sh | bash

The installer will check dependencies, clone the repository to ~/opensak, create a virtual environment, and add an application menu entry.

Linux — AppImage

Download OpenSAK-…-Linux-x86_64.AppImage from the Releases page and run it:

chmod +x OpenSAK-*.AppImage
./OpenSAK-*.AppImage

On first launch, OpenSAK offers to add itself to your application menu (Yes / No thanks / Don't ask again). Choosing Yes copies the AppImage to ~/.local/bin/OpenSAK.AppImage and adds a menu entry and icon — no terminal needed afterwards. From then on, updates can be installed from inside OpenSAK with one click (see Updates). Changed your mind? The same option is available later under Settings → Settings… → Advanced → AppImage → Install in application menu.

ℹ️
If you already use AppImageLauncher and it has integrated OpenSAK, the prompt is skipped so you don't end up with two menu entries.

Linux — Manual

sudo apt install git python3 python3-venv python3-pip libxcb-cursor0
git clone https://github.com/OpenSAK-Org/opensak.git ~/opensak
cd ~/opensak
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python run.py

Windows (Recommended: Microsoft Store)

The easiest and safest way to install OpenSAK on Windows is from the Microsoft Store:

  • Free — the same OpenSAK, no account or payment needed beyond the Store itself
  • Signed by Microsoft — no SmartScreen warnings on first launch
  • Trusted by Smart App Control — never blocked from starting (see below)
  • Updates automatically — the Store installs new versions in the background

Open the OpenSAK page in the Microsoft Store, or search for OpenSAK in the Store app, and click Get / Install. OpenSAK then appears in the Start menu like any other app.

Windows — Direct download (alternative)

If you prefer not to use the Store, download OpenSAK-…-Windows.zip from the Releases page, unzip it to a folder of your choice, and run OpenSAK.exe. No Python installation required.

⚠️
Smart App Control may block the direct download. Windows 11's Smart App Control is switched on by default on many newer PCs — and can switch itself on — so you may have it without knowing. It blocks programs that aren't signed and that Microsoft hasn't seen before, which can stop the direct download from starting. OpenSAK then shows a "Blocked by Windows Smart App Control" message. The fix is to install OpenSAK from the Microsoft Store instead. Your databases are not affected either way.
ℹ️
Windows SmartScreen may also show a warning the first time you run the direct download. Click More info → Run anyway. The source code is fully open on GitHub.

macOS

Download the correct .dmg for your Mac from the Releases page:

Mac typeFile
Apple Silicon (M1/M2/M3/M4)OpenSAK-…-macOS-arm64.dmg
IntelOpenSAK-…-macOS-x86_64.dmg

Open the .dmg and drag OpenSAK to Applications. The app is signed and notarized by Apple, so it opens normally — no Gatekeeper warning.

System Requirements

PlatformRequirement
LinuxUbuntu 20.04+ / Linux Mint 20+ / Debian 11+
WindowsWindows 10 or newer
macOSmacOS 11 (Big Sur) or newer
Disk space~500 MB (includes PySide6/Qt)

Uninstalling

Uninstalling OpenSAK removes the program only. Your databases and settings are never deleted unless you explicitly choose to remove them.

Installed fromHow to uninstall
Microsoft StoreSettings → Apps → Installed apps in Windows, find OpenSAK, and choose Uninstall
Windows direct downloadDelete the folder you unzipped OpenSAK into
Linux AppImageSettings → Settings… → Advanced → AppImage → Uninstall OpenSAK. Choose Remove program only (keeps your data) or Remove program and all data, which asks you to confirm a second time
macOSSettings → Settings… → Advanced → Uninstall → Uninstall OpenSAK. Choose Remove program only (keeps your data) or Remove program and all data, which asks you to confirm a second time. OpenSAK closes and moves itself to the Trash. Dragging OpenSAK from Applications to the Trash also works, but leaves your data behind
💡
Want to remove your data too, back it up, or move it to a new computer? Help → OpenSAK File Locations… lists every place OpenSAK keeps files, with an Open folder button for each. Do this before uninstalling on Windows.

02First Launch & Setup

When OpenSAK opens for the first time, a welcome dialog will offer to open Settings. It is recommended to do this now.

Setting Your Home Point

The home point is your reference coordinate for distance calculations and map centering. Go to Settings → Settings… (Ctrl+,), then in the User Locations section:

  1. Enter a name (e.g. Home).
  2. Enter your coordinates in any supported format (e.g. N55 47.250 E012 25.000, decimal degrees, or DMS).
  3. Click Save point. The point appears in the table above.
  4. Click ★ Activate to make it the active home point.
💡
You can add multiple home points — useful if you geocache in different regions. Switch between them from the toolbar dropdown or with the ⌂ button.

Setting Your Geocaching Username

Go to Settings → Geocaching.com tab. Enter your Geocaching.com username. This is used to identify your own caches in the list and for FTF (First to Find) detection in your logs.

03Importing Caches

OpenSAK works with GPX files and Pocket Query ZIP files — the same files you already download from Geocaching.com. No special export step is needed.

Downloading a Pocket Query (Recommended)

  1. Log in to geocaching.com.
  2. Go to Play → Pocket Queries.
  3. Run or create a Pocket Query for your area.
  4. Download the .zip file — do not unzip it.

Importing into OpenSAK

There are three ways to import:

  • Menu: File → Import GPX / PQ zip… (Ctrl+I)
  • Toolbar: Click the Import button
  • Drag & drop: Drag one or more .gpx, .zip, or .loc files directly onto the OpenSAK window

In the Import dialog you can add multiple files at once and choose which database to import into. Click Start import. After import, a summary shows new caches, updated caches, and any errors.

ℹ️
Re-importing an updated Pocket Query is safe — existing caches are updated automatically. No duplicates are created.

Importing Pocket Queries by E-mail

If your Pocket Queries arrive as .zip attachments in a mailbox — for example from a PQ club or PQ service — OpenSAK can fetch and import them directly, without downloading and unzipping by hand.

  1. Go to Settings → Settings… → PQ Email and enter your mailbox's IMAP server, port, SSL/TLS setting, username and password. Click Test connection to check the login.
  2. Go to File → Check for PQ Email… and click Check now.

Every e-mail with a .zip attachment is treated as a Pocket Query. Each zip is imported into the database with the same name if one exists, otherwise into the active database. Two options in the check dialog:

  • Only check new (unread) e-mails — skips e-mails already imported earlier. An e-mail is only marked as read once something from it has actually been imported, so a failed import is retried next time.
  • Delete the e-mail after a successful import — off by default. A failed import always leaves the e-mail in place.
ℹ️
Your password is stored in your operating system's secure keyring (Credential Manager, Keychain, or Secret Service/KWallet) — never in a plain-text file. OpenSAK verifies the mail server's security certificate before sending it, so use the server name exactly as your mail provider gives it; servers with a self-signed certificate are refused. Gmail and Outlook.com are not supported yet, as they require a different sign-in method.

Auto-geocoding

After import, OpenSAK automatically runs an offline reverse-geocode pass to fill in Country, State/Region, and County for any caches that are missing these fields. This works with no internet connection, and is enabled by default — no setup required.

Supported Formats

FormatExtensionNotes
Pocket Query ZIP.zipRecommended — includes full logs and waypoints
GPX.gpxSingle-file or Groundspeak-enhanced GPX
LOC.locLightweight coordinate-only format

Importing from a GSAK Database

Switching from GSAK? You don't have to re-download everything as GPX first. File → Import from GSAK Database… reads a GSAK backup ZIP or a raw sqlite.db3 file directly, bringing in caches, waypoints, attributes, corrected coordinates, personal notes, trackables, and your full log history — not capped the way a GPX/PQ export is.

ℹ️
Re-importing the same GSAK database is safe — it works the same way as a GPX re-import. Notes containing GSAK's embedded local images are replaced with [image: filename.ext] placeholders, since those files live on your old machine and can't travel with the database.

04Main Window Layout

OpenSAK main window layout: cache list on top, detail panel and map below
Cache list (top, full width), Cache Detail Panel (bottom-left), Map (bottom-right).

The window is divided into three main areas, all resizable by dragging the dividers:

  • Cache List (top) — full-width table of all caches matching the active filter
  • Cache Detail Panel (bottom-left) — full description, hint, attributes, and logs for the selected cache
  • Map (bottom-right) — interactive OpenStreetMap with colour-coded cache pins
💡
Drag the horizontal divider between the list and the bottom panels to give more space to the area you are currently working in. OpenSAK remembers the layout between sessions.

05Cache List

Columns

The cache list shows up to 17+ configurable columns. Choose which ones are visible via View → Choose columns… Click any column header to sort — click again to reverse the sort order. The sort is saved per database.

ℹ️
Cache names appear in bold when the cache has child waypoints — see the Waypoints tab in the Cache Detail Panel.

Clicking a Cache

Clicking a row selects the cache: the detail panel updates to show its full information, and the map pans to its pin. Double-clicking a row opens the cache on geocaching.com in your browser — the same as GSAK.

Right-Click Context Menu

Right-clicking a cache in the list shows:

  • Open on geocaching.com — opens the cache page in your browser
  • Copy coordinates — copies coordinates to clipboard
  • Mark as found / unfound
  • Toggle flag 🚩 — flag caches for batch operations
  • Lock cache / Unlock cache 🔒 — protect against being overwritten by a later import
  • Edit cache… — opens the edit dialog
  • Add corrected coordinates… — enter solved coordinates for mystery caches
  • Edit corrected coordinates… / Clear corrected coordinates

Sortable Columns (examples)

ColumnDescription
GC CodeGeocaching.com identifier
NameCache name
TypeTraditional, Mystery, Multi, etc. — icon, name as text, or both, via Choose columns…
D / TDifficulty and Terrain rating (1.0–5.0)
DistanceDistance from active home point (Haversine or Vincenty, see Settings → Advanced)
SizeNano/Micro/Small/Regular/Large
Found✓ if marked as found
Hidden dateDate cache was placed
Placed byCache owner name
Favorite ptsCommunity favorite points
Trackables 🐞Number of trackables (travel bugs/geocoins) logged in the cache
📍Corrected coordinates set indicator
FTF 🥇First to Find indicator
Flag 🚩User flag for batch operations
🔒Locked against import overwrites

06Cache Detail Panel

The bottom-left panel shows all information for the currently selected cache.

Tabs

  • Description — full HTML cache description as published on geocaching.com
  • Hint — encrypted hint; click the Decode hint (ROT13) button to toggle decoding
  • Logs — recent logs from all finders; includes a search box to find specific entries. Links in log text are clickable.
  • Attributes — all Groundspeak attributes set on the cache (dogs, parking, etc.)
  • Notes — your own free-text notes for this cache, separate from the published description and logs. Round-trips with GSAK: a note survives export → GSAK → re-import.
  • Trackables — travel bugs and geocoins logged in the cache, each with a clickable coord.info link.
  • Waypoints — child waypoints belonging to this cache (e.g. parking, stages), with prefix, type, name, coordinates, description and comment for each. Caches with waypoints show their name in bold in the cache list, and the waypoints appear as separate markers on the map when the cache is selected.

The cache type icon is shown next to the title, and a 🔒 icon appears if the cache is locked.

Cache detail panel showing a decoded hint with the Encode hint (ROT13) button
The Hint tab after clicking decode — geocaching.com hints are ROT13-encoded by default.
ℹ️
Some hints are stored as plain text rather than ROT13 — OpenSAK detects this automatically and shows the hint directly, without a decode step. Prefer to always see hints decoded? Turn on Show hints decoded by default under Settings → Display.

Locking a Cache

Right-click a cache → Lock cache, or check the box in Edit cache…. Locking freezes the cache's own fields — name, type, container, coordinates, D/T, owner, status, descriptions, hint, country/state/county — so a later GPX/PQ re-import can't overwrite them. Logs, attributes and waypoints still refresh normally on re-import. A 🔒 column in the cache list shows locked status at a glance, and you can filter on it (see All Filter Types).

Clickable Elements

  • GC code — click to open the cache page on geocaching.com
  • Coordinates — click to open in your chosen map app (Google Maps or OpenStreetMap)
  • Corrected coordinates — if set, shown with an ✏️ edit button and a 🗑 clear button; click the coordinates to open in map app

07Map

The map uses OpenStreetMap tiles via Leaflet.js. It always shows the caches currently visible in the cache list (respecting the active filter).

Pin Colors

Traditional Multi-cache Mystery/Unknown EarthCache Event / CITO Found by you Archived

Interactions

  • Click a pin to select that cache — the detail panel and list row update accordingly.
  • Pins cluster automatically when zoomed out; click a cluster to zoom in.
  • Corrected coordinates are shown as a separate pin (📍) linked to the original.
  • Use the ⌂ button in the toolbar to pan the map to your active home point.

Maximize & Pop-out

Two ways to work with a bigger map, both reachable from the two small buttons in the map's own corner, the toolbar, or the View menu:

  • ⛶ Maximize map (F11) — expands the map to fill the whole main window, hiding the cache list and detail panel. Press F11 again, or click the button again, to restore the normal 3-panel layout.
  • ⧉ Pop out map (Ctrl+Shift+M) — opens the map in its own floating window, so it can be moved to a second monitor while the main window keeps the cache list and detail panel. The pop-out window's size and position are remembered between sessions. Closing it, or pressing Ctrl+Shift+M again, docks the map back into the main window.
ℹ️
Both stay in sync with the cache list and active filter, exactly like the docked map.
OpenSAK main window with the map maximized to fill the whole window, cache list and detail panel hidden
Maximized map — the cache list and detail panel are hidden until you restore the layout.
The OpenSAK map open in its own floating pop-out window, separate from the main window
Pop-out map in its own window — move it to a second monitor while the main window keeps the list and details.

08Info Bar

The narrow bar between the cache list and the detail/map panels gives a quick status overview at all times.

ElementMeaning
Filter: …Name of the active filter profile, or None
N filters activeNumber of filter conditions currently applied (instead of a generic "Active" label)
N caches in databaseTotal caches in the active database (ignoring filter)
🚩 = NNumber of flagged caches in the current filter
Centre point: …Name of the active home point
NFound caches — black text on yellow, matching the GC Code column's found color
NAll caches in the current filter (white/default)
NInactive caches (archived + disabled) — black text on red
NYour own caches — black text on green, matching the GC Code column's owned color
💡
Click any of the colored counts to filter the list to that status — e.g. click Found to see only found caches, or All to clear the status filter again.

10Filter Dialog

Open with View → Set filter… or Ctrl+F, or click the 🔍 Filter button in the toolbar.

Filter dialog General tab showing cache type, container size, and difficulty/terrain filters
The General tab — cache type, container size, and difficulty/terrain range.

AND / OR Logic

All filters default to AND mode — a cache must pass every active filter to appear. Switch the group to OR to show caches matching any filter. Groups can be nested for complex conditions.

Filter Tabs

The filter dialog has ten tabs, modelled on GSAK's filter dialog:

  • General — name, GC code, placed by, owner, type, container, difficulty, terrain, found/not found, availability, premium, corrected coords
  • Dates — eight date fields (see All Filter Types), each with its own condition
  • Other — country, state, county, user data 1–4, GC.com note, personal note, user flag, DNF flag, FTF flag, favorite points, elevation, locked, and a block with one shared centre point for distance, direction, and how far corrected coordinates lie from the posted ones
  • Logs — filter by the logs on a cache: which logs, what type, who logged them, and how many
  • Line/Polygon — caches near a route or track, near a set of points, or inside a polygon
  • Child Waypoints — filter by a cache's child waypoints (code, type, name, comment, date, count)
  • Trackables — has / has no trackables, and filter by trackable name, tracking code and count
  • Attributes — all ~70 standard Groundspeak attributes, with Yes/No/Any per attribute, a search box, and AND/OR matching
  • Text Search — search descriptions, logs, and personal notes with the full set of text operators, including RegEx
  • Where — raw SQL WHERE clause against the caches table (advanced)

Seeing What a Filter Restricts

Every setting that differs from its default is highlighted, and so is every tab that contains one — so when you open a saved filter you can see at a glance what it actually restricts. Reset tab and Reset all clear the values and the highlighting together.

Filter dialog Attributes tab showing a list of Groundspeak attributes with Yes/No/Any checkboxes
The Attributes tab — match on any combination of the ~70 Groundspeak attributes.

Inverting a Filter

Tick Invert filter (next to the Reset buttons) to flip the whole filter: the list then shows exactly the caches the filter would otherwise hide. For example, Traditional, difficulty ≤ 2 inverted shows every cache that is not an easy Traditional. The checkbox is highlighted while it is on, is saved with a filter profile, and is cleared by Reset all (not by Reset tab, since it belongs to no tab). With no conditions set, inverting has no effect.

An inverted filter is checked cache by cache rather than in the database, so on very large databases it can take a little longer to apply.

Clearing the Filter

Click the red ✕ button in the toolbar, or go to View → Clear filter. The button turns grey when no filter is active.

11All Filter Types

FilterDescription
Cache typeTraditional, Multi, Mystery, EarthCache, Letterbox, Event, CITO, Mega-Event, Wherigo, Virtual, Webcam, Lab Cache
Container sizeNano, Micro, Small, Regular, Large, Very Large, Other, Virtual
DifficultyRange 1.0–5.0 in 0.5 steps
TerrainRange 1.0–5.0 in 0.5 steps
Found / Not foundFilter on found status
AvailabilityAvailable, Unavailable (disabled), Archived — toggled independently
DistanceDistance from a centre point — your home point, a saved point, the selected cache or a custom coordinate — with Equal, Less than, At most, More than, At least, Between or Not between. Unit follows your km/mi setting. Filters saved with the older Min/Max fields still select the same caches
NameCache name — any of the 12 text operators (below)
GC codeGC code — any of the 12 text operators
Placed by"Placed by" name — any of the 12 text operators
OwnerOwner username — any of the 12 text operators
Country / State / CountyAny of the 12 text operators
User data 1–4 / GC.com noteGSAK's four User data fields and the personal cache note synced from geocaching.com — any of the 12 text operators
Personal noteThe text of your own note (Notes tab) — any of the 12 text operators. Use empty / not empty for a simple yes/no check; filters saved with the old Yes/No checkboxes are converted automatically
DirectionDirection from the centre point, either as a bearing in degrees (0° = north, clockwise) with the same operators as Distance — Between runs clockwise, so 315°–45° is the sector through north — or by clicking compass directions (N, NE, E … NW), which fills in the matching degree range. Direction filters saved in earlier versions still match from your home point until edited
AttributeAny of ~70 Groundspeak attributes, Yes/No/Any — all must match (AND) or any may match (OR)
TrackablesHas / has no trackables, plus trackable name and tracking code (text operators) and count (Any, Equal, At least, At most, Between). Name and code must match on the same trackable; Count equal 0 finds caches without a matching trackable
Premium / Non-premiumMembership requirement
Has corrected coordsCaches with solved coordinates set
No corrected coordsCaches without solved coordinates set
Distance corrected ↔ postedHow far the corrected coordinates lie from the posted ones, in metres (feet with miles selected), with the same operators as Distance. Caches without corrected coordinates never match
User flag🚩 flagged / not flagged
DNFDid Not Find flag set/not set
FTFFirst to Find flag set/not set
LockedCache is locked against import overwrites — yes/no
Favorite pointsCommunity favorites, with the same operators as Distance. Caches without favorite points count as 0
ElevationElevation in metres (feet with miles selected), with the same operators as Distance. Caches with unknown elevation never match. Filters saved with the older from/to range for favorite points or elevation are converted automatically
DatesLast found, Hidden date, Found by me date, DNF date, Creation date, Last GPX update, Latest log date, Changed date — each with on or before / on or after / equal / between, "during" or "not during" the last N days/weeks/months/years, or compared with another date field. Creation, Last GPX update and Changed date also accept a time
LogsWhich logs are searched (all, or only each cache's latest / last N), log type or Found / Not found / Other, log date, who logged it (text operators or numeric user ID), and how many matching logs are required (at least / at most / equal / between), with Include/Exclude
Child waypointsCode, type, name, comment, date, created-by-user, and count — all criteria must hold for the same waypoint
Line / Polygon / PointsCaches within a distance of a line (route or track) or of a set of points, or inside a polygon. Enter points by hand, read them from a GPX/KML/TXT/CSV file, or add all user-flagged caches. Can be inverted with Exclude
Text searchSearches cache descriptions, logs, and personal notes (hint text excluded by default) with any of the 12 text operators. A positive operator matches if any searched field matches; a negated one (e.g. not contains) only if none does. RegEx searches are slower than plain text
WHERE clauseRaw SQLite expression against the caches table

Text Operators

Name, GC code, Placed by, Owner, Country, State, County, User data 1–4, GC.com note, Personal note, the child-waypoint and trackable text fields, the Logs tab's "logged by" field and Text Search all offer the same 12 operators:

OperatorMatches when the field…
contains / not containsincludes (or doesn't include) the text anywhere
equals / not equalsis exactly (or isn't) the text
starts with / ends withbegins or ends with the text
in list / not in listis (or isn't) one of several values
empty / not emptyhas no value (or has one)
regex / not regexmatches (or doesn't match) a regular expression

Matching is case-insensitive and works with accented and non-Latin characters.

Common Filter Recipes

GoalFilters
Family day tripNot found + Difficulty ≤ 2 + Terrain ≤ 2 + Available
Mystery caches to solveType = Mystery + Not found
Nearby traditionalsType = Traditional + Distance ≤ 5 km + Available
Caches with parkingAttribute: Parking nearby = yes
All unfound incl. archivedNot found + Availability: all three checked
Specific ownerPlaced by contains [name]
Power trailAttribute: Power trail = yes + Available
No find in the last yearLogs tab: Log types = Found it + Log date during 1 year + Exclude
Latest log is a DNFLogs tab: Logs to search = Latest + Not found only
Caches without a parking waypointChild Waypoints tab: Type contains "Parking" + Count equal 0
Caches along a routeLine/Polygon tab: Line, load the route from a GPX file, distance 0.5 km
Solved finals outside the 2-mile ruleOther tab: Distance corrected ↔ posted, More than 3219 m
Caches north of homeOther tab: centre point = your home point, Direction Between 315° and 45° (or click NW, N and NE on the compass)
Caches without a geocoinTrackables tab: Name contains "coin" + Count equal 0
Everything except easy traditionalsType = Traditional + Difficulty ≤ 2, then tick Invert filter

12Filter Profiles

Save and reload filter combinations with a single click.

Saving a Profile

  1. Open the filter dialog and configure your filters.
  2. Click Save profile.
  3. Enter a name (e.g. Easy day trip) and confirm. If a profile is already selected, its name is suggested.

If a profile with that name already exists, OpenSAK asks before replacing it.

Loading a Profile

Either open the filter dialog and select the profile from the dropdown, or use the filter profile dropdown in the toolbar — selecting a profile there applies it immediately without opening the dialog.

ℹ️
The active filter profile is saved per database. When you switch databases, the last-used profile for that database is restored automatically.

Profile files are stored in a filters folder inside OpenSAK's installation folder. Help → OpenSAK File Locations… shows exactly where that is on your computer.

13Databases

OpenSAK supports multiple separate SQLite databases. Each database has its own cache list, home point, and filter profile history.

Managing Databases

Open the Database Manager with File → Manage databases… (Ctrl+D) or click the Manage databases button in the toolbar.

Creating a New Database

  1. Click New Database.
  2. Choose a location and filename.
  3. The database is created and becomes the active database.

Adding Databases You Already Have

Click Open existing… to add a single database file, or Scan database folder… to list every OpenSAK database in your database folder that isn't in the list yet. All of them are ticked; untick any you don't want and click Add Selected. The Welcome Wizard offers the same when the database folder you choose already contains databases, for example after a reinstall or on a new computer.

OpenSAK never scans the folder by itself, so a database you removed from the list stays removed until you add it again. Files that aren't OpenSAK databases, and databases from a newer OpenSAK version, are not offered.

Switching Databases

Either double-click a database in the manager, or use the database dropdown in the toolbar to switch instantly without opening the dialog.

Each database keeps its own home location, column layout, sort order and last-used filter profile. They are stored inside the database file, so they stay with it when you copy, move, rename or restore it.

Copying and Moving a Database

Copy… makes a copy of the selected database under a new name. Move… moves it to another folder under the same name, for example from a USB stick to your internal disk. Both ask for the folder, show the file that will be created, and refuse to overwrite a file that is already there. The folder you chose is remembered until you close OpenSAK, which makes several copies to the same USB stick quick.

Move only deletes the original once the copy has been checked. If the original can't be deleted — for example on read-only media — OpenSAK uses the new copy and tells you where the old file is. You can move the database you are working in; OpenSAK carries on with it at the new location without a restart.

When a Database Is Unavailable

If the database you used last is on a USB stick or network drive that isn't connected when you start OpenSAK, OpenSAK opens another database from your list (or a new Default database) and tells you which one was missing. The missing database stays in the list, marked as not found, so you can switch back to it once the drive is connected again.

Backing Up

Use File → Back up now… to make a backup of your databases together with your settings, filter profiles, column views and custom icons. All databases are selected by default; untick any you want to leave out.

Backups go into a backup folder, by default Documents/OpenSAK Backups. You choose it in the Welcome Wizard, and can change it under Settings → Advanced → Folders or in the same dialog. Existing backups stay where they are when you change the folder. A folder on another disk, an external drive or a synced folder is the safest choice, because it also protects your data if your computer's disk fails. OpenSAK won't store backups inside its own data or database folder.

Each backup is a separate, dated folder, so you can keep as many as you like. Backups you make this way are never deleted by OpenSAK.

Compressed backups. Under Settings → Advanced → Backups you can turn on Compress backups (off by default). Each new backup is then a single .zip file instead of a folder, typically a third or less of the size. Writing it takes noticeably longer — about four times as long as a normal backup — and while it is being written there must be room for one database uncompressed as well as the zip. Existing backups are left as they are, and both kinds can be restored with File → Restore from backup…. You can also open the zip with your operating system's own tools to get a database out by hand.

When a new OpenSAK version has to update a database to a new format, it first saves a copy of the database as it was, and tells you where. Once you have chosen a backup folder, these copies go into its pre-migration subfolder; otherwise they go into a backups folder next to the database. If the backup folder is on a drive that isn't connected, the copy goes next to the database instead, so the update is never held up. You only need these copies if something went wrong, and OpenSAK never deletes them.

The message about the copy offers Apply to all databases when other databases in your list are also from an older version. It backs up and updates them all in one go, so you aren't asked again each time you switch to one.

Backing Up When You Close OpenSAK

When you close OpenSAK and something has changed since your last backup, OpenSAK asks whether to back up first. Click Back Up and Close to back up all your databases and settings, Not Now to close without a backup, or Cancel to keep OpenSAK open. If nothing has changed since the last backup, OpenSAK closes without asking.

A large backup can take a while; a progress window shows how far it has got, and Cancel stops it without leaving a half-finished backup behind. If the backup folder is on a drive that isn't connected, choose another folder in the same window, or close without a backup.

Tick Don't ask again to remember your answer: OpenSAK then always backs up on close, or never asks. You can change this, and how many automatic backups to keep (5 by default), under Settings → Advanced → Backups. Only the oldest automatic backups are deleted; backups made with File → Back up now… are kept until you delete them yourself.

Restoring a Backup

Use File → Restore from backup… to bring a database back. Pick a backup from the list (newest first), tick the databases you want, and click Restore. Use Browse to open backups stored in another folder.

A restored database is always added as a new database, named for example Denmark (restored 2026-10-01) — nothing you have now is ever overwritten. It opens exactly as it was when the backup was taken, with its own home location, columns and sort order. Filter profiles from the backup that you have since deleted are added back; profiles you still have are left as they are.

A backup made with a newer version of OpenSAK can only be restored after updating OpenSAK.

Restoring your settings. Tick Also restore settings to bring back your preferences, filter profiles, column views and icons from the backup — useful on a new computer, or after a settings change you regret. You can also restore only the settings, with no database ticked. It is off by default, and OpenSAK asks you to confirm. Your database list, your folders, your backup settings and the window layout are kept as they are now, since they belong to this computer.

Before anything changes, your current settings are saved as a backup marked Settings before restore, which is never deleted automatically — restore that one to go back. The restored settings take effect the next time OpenSAK starts; OpenSAK offers to close right away, and settings you change before then are replaced.

Useful Multi-Database Patterns

PatternExample
One database per regionCopenhagen, Jutland, Holiday area
My Finds databaseImport your My Finds PQ here for found-status updates
Trip databaseCreated by Trip Planner for a specific outing

14Waypoints & Manual Caches

You can manually add, edit, and delete caches in your database — useful for custom waypoints or entries not available via GPX import.

Adding a Cache Manually

Go to Waypoint → Add cache… (Ctrl+N). Fill in the GC code, name, type, coordinates, and other fields, then click Save. The entry is assigned an auto-generated CWxxx code if you leave the GC code blank.

Editing a Cache

Select a cache and use Waypoint → Edit cache… (Ctrl+E), or right-click → Edit cache…

Besides name, type, coordinates and descriptions, you can edit owner name, hidden / found / DNF dates, county, elevation, and whether the descriptions contain HTML. Unticking Found or DNF also clears the matching date. The Personal tab holds the user flag, user data 1–4, GC note, watch, your personal note, and corrected coordinates.

The Waypoints tab lets you add, edit and delete child waypoints, including prefix, code, date, comment and flag. A prefix is required, and a waypoint code already used by another waypoint of the same cache is rejected. The detail panel and map update as soon as you save.

Deleting a Cache

Select a cache and press Delete, or go to Waypoint → Delete cache… A confirmation dialog prevents accidental deletion.

ℹ️
Manually added caches survive re-imports. Re-importing a Pocket Query only updates caches whose GC codes already exist in the database.

15Corrected Coordinates

For mystery and puzzle caches, store the solved final coordinates separately from the listed coordinates. Corrected coordinates are used for GPS export, trip planning, and map display.

Adding Corrected Coordinates

Right-click the cache in the list → 📍 Add corrected coordinates… (or click the Add corrected coordinates button in the detail panel).

Enter the solved coordinates in any supported format (DMM, DMS, or decimal degrees). The original coordinates are preserved and shown alongside the corrected ones.

Editing or Clearing

Right-click → 📍 Edit corrected coordinates… or ✕ Clear corrected coordinates. The ✏️ and 🗑 buttons in the detail panel also work.

💡
The 📍 column in the cache list shows which caches have corrected coordinates set. You can filter for these using the Has corrected coords filter.

16Marking Caches as Found

Marking a Single Cache

Right-click the cache in the list → Mark as found (or Mark as unfound to reverse it). The found date is set to today.

Auto-detection During Import

When importing a Pocket Query, OpenSAK automatically detects your finds by looking for your own log entries in the imported GPX data. The found status and found date are set without any extra step — as long as your Geocaching.com username is set in Settings.

FTF Detection

First to Find status is also detected automatically during import: OpenSAK scans your own log entries for FTF keyword patterns (e.g. "FTF", "First to Find", "First Find") and sets the FTF flag accordingly.

17Updating Finds from "My Finds"

For the most accurate found status, use a My Finds Pocket Query. This works even for caches found before you started using OpenSAK.

  1. On geocaching.com, go to Play → Pocket Queries and download your My Finds zip.
  2. Create a dedicated database in OpenSAK called My Finds and import the zip into it.
  3. Switch back to your main database.
  4. Go to Settings → Update finds from reference database…
  5. Select the My Finds database as the reference.
  6. OpenSAK matches GC codes and marks all matching caches as found.

18Flags

The 🚩 flag is a personal marker you can set on any cache. Flags are saved in your local database and not shared or affected by imports.

Toggling a Flag

Right-click a cache → Toggle flag 🚩, or click in the 🚩 column directly.

Flag Count

The info bar shows the current count of flagged caches in the active filter (🚩 = N). The status bar also shows a count when you toggle a flag.

Batch Operations on Flagged Caches

  • Waypoint → 🚩 Delete flagged caches… — delete all flagged caches in the current filter (with confirmation)
  • Waypoint → 🚩 User flags → Set flag on all caches in filter… — flag every cache currently shown in the list (with confirmation)
  • Waypoint → 🚩 User flags → Clear flag on all caches in filter… — remove the flag from every cache currently shown in the list (with confirmation)
  • Waypoint → 🚩 User flags → Clear all flags in database… — remove all flags from the entire active database, regardless of the filter

You can also filter for flagged/unflagged caches using the User flag filter in the filter dialog.

19Deleting Caches

Three delete operations are available under the Waypoint menu:

ActionWhat is deleted
Delete cache… (Del)The selected cache only
Delete flagged caches…All 🚩 flagged caches in the current filter
Delete all caches in filter…Every cache currently shown (respects the active filter)
⛔
All delete operations are permanent and cannot be undone. A confirmation dialog is shown for each operation.

20Send to GPS

Export the currently filtered caches directly to a Garmin GPS device (USB storage or Windows MTP) or save them to a file.

Open with GPS → Send to GPS… (Ctrl+G) or the 📤 button in the toolbar.

Send to GPS dialog showing destination options and export settings
The Send to GPS dialog — send directly to a connected device, or save as a GPX file.

Sending to a Garmin Device

  1. Connect your Garmin device via USB (mass storage or MTP).
  2. Select Send directly to GPS device.
  3. Click 🔍 Scan to detect Garmin devices.
  4. Select your device from the list.
  5. Choose a format — GPX or GGZ (see below).
  6. Click Send.

GPX caches are written to the Garmin/GPX/ folder on the device; GGZ caches go to Garmin/GGZ/.

💡
GPX vs. GGZ: GGZ is Garmin's compressed format and supports an unlimited number of caches in one export — GPX-based transfers are capped by the device. If you have a large database, GGZ is the better choice.

Saving as a GPX File

Select Save as GPX file, choose a location, and click Send. This is useful for devices that are not automatically detected, or for copying to another location.

ℹ️
Windows supports compatible Garmin devices using USB mass storage or MTP. Bluetooth transfer is not available.

Export Options

  • Choose GPX or GGZ format
  • Choose how many logs per cache to include
  • Corrected coordinates are exported as the primary coordinate (original stored separately)

21File Export (GPX / LOC / GGZ)

Export your filtered caches to standard geocaching file formats via File → Export:

FormatBest for
GPXFull export with descriptions, logs, and waypoints — compatible with most GPS apps
LOCLightweight coordinate-only format for basic GPS devices
GGZGarmin's compressed format — unlimited caches per export, matches GSAK's GGZ layout byte-for-byte

All exports use the caches currently visible in the list (respecting the active filter). You can limit the export to the first N caches, and choose whether caches with corrected coordinates are exported with those or with their original coordinates.

Set the Folder and File name once and later exports go straight there, without a save dialog. The file name can be fixed text or use variables, for example {database}_{date}: {database}, {filter}, {center}, {date}, {time}, {datetime}, {format} and {count}, among others — the info button next to the field lists them all, and a preview shows the exact file that will be written. If the file exists decides whether OpenSAK asks, overwrites or skips.

Save the dialog's settings under a name with Export settings and load them again later; OpenSAK also remembers the settings you used last.

22Export to Google Maps (KML)

Export your filtered caches as a KML file for viewing in Google Maps.

Go to File → Export → Export to Google Maps (KML)…

Options

  • Include custom waypoints (parking spots, stages, finals)
  • Include caches you have already found

Importing into Google Maps

  1. Go to maps.google.com/d
  2. Create a new map
  3. Click Import layer and upload the KML file

23Trip Planner

Plan a geocaching outing by selecting the best caches from your current database. Open with GPS → Trip Planner (Ctrl+T) or the 🗺️ button in the toolbar.

ℹ️
The Trip Planner is a non-modal window — it stays open alongside the main window. Other dialogs cannot be opened while Trip Planner is active.

Radius Mode

Select caches within a circle around your home point:

  • Set the number of caches for the trip
  • Set a maximum radius (or 0 for no limit)
  • Sort by distance, difficulty, terrain, placement date, or name
  • Optionally filter to unfound and/or available caches only

Route Mode (A → B → … )

Select caches along a driving route:

  • Add up to several waypoints (hotel, rest stop, destination)
  • Add points from your saved home points
  • Set a corridor width (max distance from the route)
  • Caches are sorted in driving order along the route

Exporting the Trip

From the Trip Planner you can:

  • 📤 Send to GPS… — directly to a connected Garmin device
  • 💾 Save as GPX file… — save the trip as a GPX
  • 🗺️ Show on map — preview selected caches on an interactive map
  • 🗄️ Save to database… — save the trip caches to a new or existing OpenSAK database

24Coordinate Converter

Open with Tools → Coordinate Converter (Ctrl+K).

Convert between coordinate formats: Degrees-Minutes-Seconds (DMS), Decimal Minutes (DMM), and Decimal Degrees (DD). If a cache is selected, its coordinates are pre-filled.

Paste any coordinate string in any format — the converter detects the format automatically and displays the equivalent in all three formats.

25Coordinate Projection

Open with Tools → Coordinate Projection (Ctrl+P).

Calculate a new coordinate by projecting from a known point at a specific bearing and distance. Useful for multi-caches where a stage gives you a bearing and distance to the next point.

  • Enter or paste the starting coordinate
  • Enter the bearing (0–360°) and distance (meters or km)
  • The projected coordinate is shown and can be copied

26Digit Checksum

Open with Tools → Digit Checksum…

Calculates the digit sum (and iterated digit sum) of one or more numbers. Used in many mystery cache puzzles where you calculate coordinates from the sum of digits in other numbers.

27Midpoint

Open with Tools → Midpoint…

Calculate the geographic midpoint between two coordinates. Enter coordinates A and B; the result is shown in all three coordinate formats and can be copied to the clipboard.

28Distance & Bearing

Open with Tools → Distance & Bearing…

Calculate the great-circle distance and forward/reverse bearing between two coordinates. If a cache is selected, point A is pre-filled.

OutputMeaning
DistanceStraight-line (great-circle) distance in km and miles
Bearing A → BTrue bearing from point A to point B
Bearing B → ATrue bearing from point B back to point A

29Settings

Open with Settings → Settings… (Ctrl+,) or the ⚙ button in the toolbar.

Settings dialog General tab showing display options including text and icon size
The General tab — distance units, map app, coordinate format, date format, and text/icon size.

General Tab

SettingDescription
User LocationsAdd, edit, activate, and delete named home points
Show distances in milesSwitch distance display from km to miles
Map appGoogle Maps or OpenStreetMap (used when clicking coordinates)
Coordinate formatDMM, DMS, or Decimal Degrees — used throughout the interface
Date formatOS locale, dd.mm.yyyy, mm/dd/yyyy, or yyyy-mm-dd
Text and icon sizeSmall, Medium, or Large — affects the cache list grid (font and row height), the detail panel, and the tab labels
Show hints decoded by defaultSkip the decode-click and show hints already readable when you open a cache. Off by default (hints start hidden, as before).
ThemeAutomatic (follow OS), Light, or Dark
LanguageChoose UI language (restart required)

Map Tab

Turn the map on or off, limit how many caches the map shows (nearest to your active home point first — much faster on large databases), and set the radius and cache limit for the split-screen map around the selected cache.

Geocaching.com Tab

SettingDescription
UsernameYour geocaching.com username — used for find detection and FTF detection
Home locationYour Geocaching.com home location (shown as the ★ Home point)

PQ Email Tab

The mailbox OpenSAK checks for Pocket Query e-mails: IMAP server, port, SSL/TLS, username and password, plus a Test connection button. See Importing Pocket Queries by E-mail.

Advanced Tab

Folders

Shows the current installation folder (read-only), the database folder and the backup folder. The database and backup folders can be changed directly here — no need to go through the setup wizard again.

SettingDescription
Database folderChange where new and existing databases are stored. If existing databases are found in the old location, you're asked whether to move them along (keep originals, delete originals, or leave them and only use the new folder for future databases)
Backup folderWhere backups are stored (see Backing Up). OpenSAK refuses a folder inside its own data or database folder. Changing it doesn't move existing backups, and no restart is needed
Run setup wizard againRe-opens the first-run welcome wizard at any time, e.g. to change language, installation folder or backup folder
SettingDescription
Search min charsMinimum characters before the search fires (0 = adaptive)
Search debounce (ms)Delay before search fires while typing (0 = adaptive)
Check for updates automaticallyBackground update check at startup
Notify me about beta releases tooOnly relevant if you're on a stable release — off by default. When on, you're also checked against the latest beta and offered whichever is newer.
Distance calculation methodHaversine (default) or Vincenty (WGS84) — Vincenty is up to ~0.3% more accurate over long ranges, at a small performance cost

AppImage (Linux only)

Shown only when running the Linux AppImage. Install in application menu adds OpenSAK to your menu (useful if you chose Don't ask again on first launch), and Uninstall OpenSAK removes it again — see Uninstalling.

Uninstall (macOS only)

Shown only in the macOS app. Uninstall OpenSAK moves OpenSAK to the Trash and lets you choose whether to keep or delete your caches, databases and settings — see Uninstalling. If OpenSAK is running straight from the disk image, or you don't have permission to change the folder it's in, you'll be asked to drag it to the Trash in Finder instead.

Custom Icon Packs

Want cache-type or found-smiley icons that look different from the bundled set? Click Open icons folder to reveal a folder alongside your settings file where you can drop replacement SVG files — no code changes or rebuilding required. File names must match the bundled assets exactly; click View icon naming guide for the full list of file names, recommended canvas sizes, and export tips. A missing or invalid custom file automatically falls back to the bundled default — it's never a crash. This folder lives alongside your settings, so it survives future OpenSAK updates.

💡
Enjoying OpenSAK? Look for the ♥ Support OpenSAK… entry in the Help menu — it takes you straight to the project's Open Collective page, which covers costs like code signing so releases keep arriving safely.

30Choosing Columns

Go to View → Choose columns… to select which columns appear in the cache list and in what order. Drag rows to reorder, check/uncheck to show or hide.

Column chooser dialog with a checklist of available columns and a container size display option
Choose columns — GC Code and Name can't be hidden, everything else is optional.

Column visibility and order are saved between sessions.

31Language

Go to Settings → Settings… → General tab → Language. Select your language and click OK. The new language takes effect the next time OpenSAK is started.

Currently supported languages:

🇩🇰 Danish 🇬🇧 English 🇫🇷 French 🇵🇹 Portuguese 🇩🇪 German 🇨🇿 Czech 🇸🇪 Swedish 🇳🇱 Dutch 🇨🇭 Swiss German 🇵🇱 Polish 🇪🇸 Spanish

Polish and Spanish are a first, machine-translated version — corrections from native speakers are very welcome.

Want to help translate? See CONTRIBUTING.md — it only requires translating a single Python file.

32Theme

Go to Settings → Settings… → General tab → Theme:

  • Automatic — follows your operating system's light/dark preference
  • Light — always light
  • Dark — always dark

The theme change takes effect immediately when you click OK — no restart needed.

33Updates

How OpenSAK is updated depends on how you installed it:

Installed fromHow updates work
Microsoft StoreFully automatic — the Store installs new versions in the background. OpenSAK doesn't show its own update notifications; Help → Check for updates… just tells you whether a newer version exists.
Linux AppImage (added to the menu)Upgrade now downloads, verifies and installs the new version in place. Close and reopen OpenSAK to start it.
macOSDownload & Install downloads and verifies the update and replaces the app in Applications. OpenSAK then closes — open it again to start the new version.
Windows direct downloadDownload & Install downloads and verifies the update, then shows it in Explorer so you can unzip it. Consider switching to the Microsoft Store version to get automatic updates.

Every download is checked against a published SHA-256 checksum before it is used.

Except in the Store version, OpenSAK checks for new versions automatically 5 seconds after startup (can be disabled in Settings). When a new version is found, a notification dialog offers:

  • Upgrade now / Download & Install — as described above; on other installations, Open releases page takes you to GitHub instead
  • ♥ Support OpenSAK… — opens the project's Open Collective page; doesn't affect your update decision, you can still choose one of the other options afterwards
  • Skip this version — suppress notifications for this specific version
  • Later — dismiss until next launch

You can also check manually via Help → Check for updates…

ℹ️
Running a beta version? You're checked against both the latest beta and the latest stable release, and offered whichever is newer — so you'll always hear about a stable release too, not just newer betas.
💡
Running a stable release but want to help test upcoming betas? Turn on Notify me about beta releases too under Settings → Updates — off by default, so this never happens unless you opt in.

34Keyboard Shortcuts

This reference is also available inside the app — go to Help → Keyboard Shortcuts… to see and customize every binding in an editable table, with a "Reset all" button to restore the defaults. Overrides are remembered across restarts.

File & Database

ShortcutAction
Ctrl+DManage databases
Ctrl+IImport GPX / PQ zip
Ctrl+QQuit

Cache List

ShortcutAction
Ctrl+NAdd cache manually
Ctrl+EEdit selected cache
DeleteDelete selected cache
F5Refresh list

View & Filters

ShortcutAction
Ctrl+FOpen filter dialog

GPS & Trip Planning

ShortcutAction
Ctrl+GSend to GPS
Ctrl+TOpen Trip Planner

Geocaching Tools

ShortcutAction
Ctrl+KCoordinate Converter
Ctrl+PCoordinate Projection

Settings

ShortcutAction
Ctrl+,Open Settings

35Getting Help

Debug Log

If something isn't working as expected, go to Help → Open log file to find the application log. Including it with a bug report makes the problem much easier to track down. If OpenSAK crashed or hung, Help → Open log from last restart shows the log from the previous session.

File Locations

Help → OpenSAK File Locations… shows every place OpenSAK keeps files on your computer: settings and application data, the startup configuration, your database folder, databases opened from other locations, the saved PQ Email password, and (on Linux) the application menu files. Each row shows whether the location exists and how much space it uses, with an Open folder button. Copy all to clipboard gives you a text summary to paste into a bug report. This window only shows information — it never deletes anything.

ResourceLink
Bug reports & feature requestsgithub.com/OpenSAK-Org/opensak/issues
Community discussionFacebook group: OpenSAK
Releases & downloadsgithub.com/OpenSAK-Org/opensak/releases
ChangelogCHANGELOG.md on GitHub
ContributingCONTRIBUTING.md on GitHub
Support the projectopencollective.com/opensak
Websiteopensak.com
💡
OpenSAK is free and open-source software released under the MIT licence. Contributions of any kind — code, translations, documentation, or testing — are very welcome.

This guide was generated from the OpenSAK source code (v1.22.0-beta.2). Last updated September 2026.