2FAS for iOS is the open source iPhone build of a two-factor authenticator
Source code for 2FAS Auth iOS app
At a glance
- What is it?
- The 2FAS for iOS repository holds the source for the Open Source 2FAS app, an iPhone authenticator for TOTP and HOTP one-time passwords. The code is GPL-3.0 while the artwork carries separate terms, and there is no build instruction in the repository at all.
- Who is it for?
- 2FAS for iOS suits a developer who wants to read and build the authenticator they carry, and a user who wants a two-factor app whose source they can inspect, on the condition that they accept the GPL-3.0 terms and do not need the artwork. It does not suit a team looking for a drop-in authentication library, because this is an application, and it does not suit a fork that intends to ship the graphics, because the README states those assets are outside the open source project.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Swift, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What the repository actually contains, and what it does not
The top level listing is short: a .gitattributes file, a .github directory, a .gitignore, CONTRIBUTING.md, LICENSE, README.md, SECURITY.md, and one source directory called TwoFAS. That is the whole shape of it, and it tells you the nature of the project. This is the source for an end user application, the iOS app for the Open Source 2FAS project, not a library you drop into your own product and not a backend service. The README calls it the official iOS app for the Open Source 2FAS project, and the repository description says the same in fewer words. Anyone looking for a Swift package to add a second factor to their own login screen will not find one here, and anyone looking for the server side of the 2FAS service will not find it here either. What is here is one client, in Swift, for the platform most people carry a second factor on.
TOTP and HOTP are the two standards the app implements
The feature list is short and precise. The app supports time-based one-time passwords, TOTP, and HMAC-based one-time passwords, HOTP, and the README states that it is compatible with any service that supports those standards, naming Google, Microsoft and Dropbox as examples. The distinction matters for how you set an account up. A TOTP code is derived from the current time, so it changes on a fixed interval and the phone does not have to talk to a server for it to be valid. An HOTP code is derived from a counter that the server and the phone increment together, so the two need to stay in step. The README also frames the underlying idea, describing 2FAS as Two-Factor Authentication Service, a method that adds a second layer on top of a username and password, using a one-time password shown on the phone to verify identity and prevent unauthorised access even when a password has been compromised. Easy to set up and use is listed as a feature, which is a design goal rather than a technical claim.
Installing the app means downloading a release, not building
There is no build instruction in the repository, and the README does not pretend otherwise. Getting started is three steps for an end user: download the app from the releases page linked at 2fas.com, install it on your iPhone, and follow the on-screen instructions to set up 2FAS for your online accounts. That is the intended path, and it is a distribution story rather than a developer one. For someone who wants to compile the Swift sources, the repository does not describe the required Xcode version, the signing setup, the CocoaPods or Swift Package Manager dependencies, or the provisioning profile, and the TwoFAS directory is the only place the application code lives. Anyone planning to build from source will need to reconstruct that setup rather than follow a documented procedure, and that reconstruction is the first concrete obstacle to self-building this app.
The artwork sits outside the GPL-3.0 grant
The licence arrangement has a split that the README calls out under its own heading. The Open Source 2FAS project is licensed under the GNU General Public License v3.0, and the LICENSE file sits at the root of the repository. But the graphics used in the app are explicitly not part of the open source project and are subject to their own separate licensing terms. That is a stronger and more common restriction than the one most open source licences apply to artwork, and it has a direct effect on anyone who wants to rebrand the app, ship a fork under a different name, or reuse the icons in a companion product. The code grant is broad by the standards of a GPL-3.0 project, and the visual identity is not covered by it at all. This is not a fine print trap; the README gives it its own section and states it in one sentence, but it is the clause most likely to be missed by someone who assumes a single licence covers the whole tree.
Bugs go to GitHub, vulnerabilities go to a private address
Reporting is split along the same careful lines as the licence. Ordinary bugs are handled through GitHub on the 2FAS for iOS issues page, and the README asks you to search for existing issues before adding a new one so that duplicates are avoided. Security issues have a separate route: send a detailed description of the vulnerability to [email protected], and do not use that address for general inquiries or bug reports unrelated to security concerns. That two-channel arrangement is the responsible setup for a credential-holding application, and the SECURITY.md file at the root of the repository is where the fuller policy should live. The contrast with a service that logs every request is worth stating plainly. A one-time password app holds the seeds that generate your second factors, so the disclosure channel matters more here than in most client applications, and the README treats it accordingly.
Contributions become community property by the terms of the project
The contribution terms are unusual enough to read carefully. The README says contributions are welcome and points at CONTRIBUTING.md for the steps, with pull requests reviewed and merged into the main codebase when approved. It then adds that by sharing ideas and code with the 2FAS community, either through GitHub or Discord, you agree that those contributions become the property of the 2FAS community and may be implemented into the 2FAS open source code. That is a contribution assignment rather than the standard contributor licence agreement most projects ask for, and it sits alongside the GPL-3.0 grant on the code. Someone sending a patch to fix a sync bug is agreeing to hand that work over, which is consistent with a project that wants to keep a single canonical implementation rather than a set of divergent forks. The practical advice is to read CONTRIBUTING.md before writing code, because the assignment of your work is decided by the project's terms rather than by a negotiation after the fact.
What the release notes say, and what they leave out
The recent releases show a project in active development with a short, honest changelog. Version 6.0.0, tagged on 2026-09-15, redesigned the app using the Liquid Glass UI language, which is a visual overhaul rather than a functional change. Version 5.4.4 from the same day updated translations and services, and version 5.4.3 improved syncing. The tag naming carries a doubled v, vv6.0.0 and vv5.4.4, which is a release tooling artefact rather than a versioning scheme to interpret. The last push to the repository was on 2026-10-18, so the source tree is moving ahead of the newest tag. The limits of the changelog are just as notable as its content. The notes do not describe what the service side does, whether account data is stored locally or on a server, what the sync in 5.4.3 actually syncs, or how a service added through the new services screen is bound to a 2FAS account. A reader of the release list learns that the interface and the sync were touched, and not much more.
Editorial conclusion
2FAS for iOS suits a developer who wants to read and build the authenticator they carry, and a user who wants a two-factor app whose source they can inspect, on the condition that they accept the GPL-3.0 terms and do not need the artwork. It does not suit a team looking for a drop-in authentication library, because this is an application, and it does not suit a fork that intends to ship the graphics, because the README states those assets are outside the open source project. Before adopting, read the SECURITY.md file and send vulnerability reports to [email protected] rather than the public issues page, check the graphics licensing before rebranding, and note that the last push to the repository was on 2026-10-18 while the newest tagged release, v6.0.0, dates from 2026-09-15.
Frequently asked questions
How do I install 2FAS for iOS?
The README gives three steps for an end user: download the app from the releases page at 2fas.com, install it on your iPhone, and follow the on-screen instructions to set up 2FAS for your online accounts. The repository itself contains no build instructions for compiling the Swift sources.
Which one-time password standards does 2FAS for iOS support?
It supports time-based one-time passwords, TOTP, and HMAC-based one-time passwords, HOTP. The README states compatibility with any service supporting those standards, naming Google, Microsoft and Dropbox as examples.
Can I reuse the 2FAS for iOS graphics in my own project?
No. The README states that the graphics used in the app are not part of the open source project and are subject to their own separate licensing terms, even though the code itself is under the GNU General Public License v3.0.
How do I report a security vulnerability in 2FAS for iOS?
Send a detailed description of the vulnerability to [email protected]. The README asks that this address not be used for general inquiries or bug reports unrelated to security concerns, which should instead go to the GitHub issues page.
What licence is the 2FAS for iOS source under?
The code is licensed under the GNU General Public License v3.0, with the full text in the LICENSE file at the root of the repository. The graphics are excluded from that grant and carry separate terms.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/twofas-2fas-ios)Was this useful?