Your rating: None Average: 5 (29 votes)

SailOTP is a Sailfish Implementation of the Google-Authenticator algorithms, also known as TOPT (timer based) and HOTP (counter based) as described in RFC 6238 and 4226. A growing number of sites uses this algorithm for two-factor-authentication, including Github, Linode and several Google services.

One can add new OTP-entries using the pulley-menu. Codes can be added using the integrated QR-Code-Reader or by manually typing in the token information.

The main view of the app will show a list off all entries and their current One-Time-Tokens. The entries will be regenerated every 30 seconds, the remaining time for the current tokens is shown through a progress bar at the top of the app. HOTP-type tokens are not updated automatically, instead a refresh button is shown on the right of the token to calculate the next value and increment the counter. An entry can be edited, deleted or moved up and down in the list by long-pressing on it.

In edit-mode one can show a QR-Code of the entry (e.g. for importing it on another device) through the pulley menu.

One entry can be stared by tapping the star icon on the left. the stared item will be shown on the ActiveCover. If the Token is timer based, it will be refreshed every 30 seconds. 5 seconds before the token changes it's color will change to red. For counter based tokens a cover action to calculate the next token is shown instead. The item can be unstared by tapping the star icon again on the main view.

From the main view a token can be copied to the clipboard by tapping on it.

From the pulley menu the token database can be exported to a file for backup purposes. The backup is a AES-256-CBC encrypted and
Base64 encoded file containing a JSON-representation of the database. It can be decrypted with openssl using the following command:

openssl enc -d -a -A -md md5 -aes-256-cbc -in <file>

if you need the information outside of SailOTP.

Importing the file is also possible from the pulley menu. If a file contains tokens that are already in the database (title and secret of the token match an existing one), these tokens will not be added again.

It is also possible to generate tokens for SteamGuard (Steams TOTP-Variant for 2-Factor-Auth). To use this feature, one will have to activate it using the original Steam Android app. After activating it one can get the secret code from '/opt/alien/data/data/$STEAMID'. This file contains json data, including the OTP-URL in the form 'otpauth://totp/Steam:$STEAM_USERNAME?secret=$SECRET&issuer=Steam'. The code from this URL can be added manually using the 'Steam Guard'-OTP-Type in SailOTP.

If you find any bugs or want to suggest a feature, feel free to use Githubs Issues feature or write an email to sailfish _AT_


Version 1.10.2

  • Add Missing Camera Permission (contributed by Keeper-of-the-Keys)

Version 1.10.1

  • Update Swedish Translation (contributed by Åke Engelbrektson)

Version 1.10.0

  • Added Customizable Time Period (contributed by Andrey Skvortsov)
  • Added SailJail Permissions (contributed by DrYak)

Version 1.9.4

  • Update Brazilian Portuguese Translation (contributed by caio2k)
  • Refreshed App Icon (contributed by JSEHV)

Version 1.9.3

  • Added Hungarian Translation (contributed by 1Zgp)

Version 1.9.2

  • Fix a Small Bug in Search (conbtributed by Jyri-Petteri Paloposki)

Version 1.9.1

  • Fix About Page (contributed in parts by Jyri-Petteri Paloposki)
  • Update Swedish Translation (contributed by Åke Engelbrektson)
  • Small Visual Fix for the Progressbar

Version 1.9.0

  • Added Search Functionality (contributed by Jyri-Petteri Paloposki)
  • Updated Finnish Translation (contributed by Jyri-Petteri Paloposki)

Version 1.8.2

  • Added Dutch Translation
  • Adapted Base32 Check to Accept Amazons Secrets

Version 1.8.1

  • Translation Updates

Version 1.8.0

  • Added possibility to show a Token as QR-Code
  • Added possibility to hide Tokens by default and reveal on tap
  • Added Base32 input validation for secret
  • Fix progressbar placement for different screen sizes / ambiances
  • Fix About-Page styling for light ambiances

Version 1.7.2

  • Small Visual Fix for SailfishOS

Version 1.7.1

  • Added Italian Translation contributed by Tichy
  • Adapted Packaging for new Harbour Rules

Version 1.7

  • Added Chinese Translation contributed by BirdZhang
  • Added Finnish Translation contributed by Johan Heikkilä (hevanaa)
  • Added Russian Translation contributed by moorchegue
  • Added Spanish Translation contributed by p4moedo
  • Some internal Preparation for future features

Version 1.6

  • Changed AES Crypto Engine to Fix Import  / Export Problem
  • NOTE: You should recreate your Backup Exports since they may note be readable with the new Version due to the bug.

Version 1.5

  • Added French Translation (Thanks to Romain Tartière)
  • Bugfix: Refresh HOTP-Token from Cover. Closes Github Issue #11

Version 1.4

  • Length of the Token can be set
  • Time Derivation is configurable

Version 1.3

  • Added Support für SteamGuard Tokens (Thanks to Robin Appelman)

Version 1.2

  • Added swedish translation contibuted by Åke Engelbrektson

Version 1.1

  • Added URL-decoding for OTP-titles when scanning QR-codes

Version 1.0

  • QR-Code reader is now harbour-compatible

Version 0.8

  • Added QR-Code-Export for tokens from the edit page
  • Added possibility to reorder tokens

Version 0.7

  • Added Integrated QR-reader for adding tokens

Version 0.6

  • Added internationalization support
  • Added German Translation
  • Tokens can be switched on the Cover
  • Some minor UI-tweaks

Version 0.5

  • Added Export / Import for the Tokens Database

Version 0.4

  • Added possibility to use HOTP-tokens

Version 0.3

  • Added possibility to "star" an entry to show it on the ActiveCover
  • Tokens can be copied to the clipboard by tapping on them

Version 0.2

  • Added possibility to edit existing entries
  • Better error handling for invalid secrets
  • Better input checks on add/edit

Version 0.1

  • Initial Release


Application versions: 
File harbour-sailotp-1.10.2-1.aarch64.rpm258.52 KB25/01/2023 - 17:45
File harbour-sailotp-1.10.2-1.armv7hl.rpm237.54 KB25/01/2023 - 17:45
File harbour-sailotp-1.10.2-1.i486.rpm281.74 KB25/01/2023 - 17:45
File harbour-sailotp-1.10.1-1.aarch64.rpm257.72 KB27/12/2022 - 19:30
File harbour-sailotp-1.10.1-1.armv7hl.rpm237.72 KB27/12/2022 - 19:30
File harbour-sailotp-1.10.1-1.i486.rpm281.6 KB27/12/2022 - 19:30
File harbour-sailotp-1.10.0-1.aarch64.rpm257.62 KB18/12/2022 - 15:20
File harbour-sailotp-1.10.0-1.armv7hl.rpm237.26 KB18/12/2022 - 15:20
File harbour-sailotp-1.10.0-1.i486.rpm281.36 KB18/12/2022 - 15:20
File harbour-sailotp-1.9.4-1.aarch64.rpm240.51 KB26/06/2021 - 17:19
File harbour-sailotp-1.9.4-1.armv7hl.rpm219.05 KB26/06/2021 - 17:19
File harbour-sailotp-1.9.4-1.i486.rpm263.13 KB26/06/2021 - 17:19
File harbour-sailotp-1.9.3-1.aarch64.rpm310.88 KB26/05/2021 - 08:59
File harbour-sailotp-1.9.3-1.armv7hl.rpm265.69 KB21/02/2021 - 14:27
File harbour-sailotp-1.9.3-1.i486.rpm309.53 KB21/02/2021 - 14:27
File harbour-sailotp-1.9.2-1.armv7hl.rpm263.73 KB18/01/2021 - 20:04
File harbour-sailotp-1.9.2-1.i486.rpm307.97 KB18/01/2021 - 20:04
File harbour-sailotp-1.9.1-1.armv7hl.rpm263.73 KB11/01/2021 - 19:18
File harbour-sailotp-1.9.1-1.i486.rpm307.5 KB11/01/2021 - 19:18
File harbour-sailotp-1.9.0-1.armv7hl.rpm263.62 KB04/01/2021 - 22:23
File harbour-sailotp-1.9.0-1.i486.rpm307.55 KB04/01/2021 - 22:23
File harbour-sailotp-1.8.2-1.armv7hl.rpm254.76 KB07/04/2019 - 22:37
File harbour-sailotp-1.8.2-1.i486.rpm287.37 KB07/04/2019 - 22:37
File harbour-sailotp-1.8.1-1.armv7hl.rpm253.18 KB03/03/2019 - 19:15
File harbour-sailotp-1.8.1-1.i486.rpm286.03 KB03/03/2019 - 19:15
File harbour-sailotp-1.8.0-1.armv7hl.rpm253.11 KB24/02/2019 - 18:24
File harbour-sailotp-1.8.0-1.i486.rpm285.92 KB24/02/2019 - 18:24
File harbour-sailotp-1.7.2-1.armv7hl.rpm219.17 KB17/06/2018 - 10:11
File harbour-sailotp-1.7.2-1.i486.rpm273.3 KB17/06/2018 - 10:11
File harbour-sailotp-1.7.1-1.armv7hl.rpm219.08 KB09/04/2018 - 20:12
File harbour-sailotp-1.7.1-1.i486.rpm252.24 KB09/04/2018 - 20:12
File harbour-sailotp-1.7-1.armv7hl.rpm188.88 KB02/04/2018 - 10:42
File harbour-sailotp-1.7-1.i486.rpm221.48 KB02/04/2018 - 10:42
File harbour-sailotp-1.6-1.armv7hl.rpm181.65 KB30/10/2017 - 14:12
File harbour-sailotp-1.6-1.i486.rpm214.47 KB30/10/2017 - 14:12

Add Missing Camera Permission (contributed by Keeper-of-the-Keys)


seiichiro0185's picture

It works for me. IIRC I have to input the characters lowercase for it to work, although they are displayed uppercase in steam (and SailOTP)

pauligrinder's picture

Ah, that's it! Thank you very much. Very stupid that the characters are shown in uppercase though. I mean in case of the steam-app. It should automatically do a "toLowerCase()" conversion if that's what it needs...

McCloud's picture

All 3 of my Jollas have some kind of malfunction and I must give you two thumbs up for making easy export with QR. Not like with android google authenticator, where you must dig trough sql tables. Again, thank you for that!

McCloud's picture

STEP 3 on

I would like to uninstall android app from Jolla if I could import keyes to your app.

McCloud's picture


sqlite3 /data/data/

select * from accounts;

seiichiro0185's picture

I didn't try to import from Google Authenticator, but with the Info from the sqlite DB you should be able to manually add the tokens to SailOTP. 

ZeiP's picture

Could you add support for more digits, as used by for example the Blizzard authenticator:

seiichiro0185's picture

I will add this in the next Version, although I can't promise a timeline yet.

seiichiro0185's picture

I finally came around to do some coding for SailOTP again. Version 1.4 which includes this change is now released on openrepos, and submitted for QA on harbour.

coderus's picture

i486 build please?

seiichiro0185's picture

I uploaded the i486 Build of Version 1.3. Please note that it's only briefly tested in the Emulator, since my Tablet is still MIA.