Unitary

CI License: AGPL v3

A powerful, flexible unit conversion mobile application targeting scientific and technically-minded users. Features both freeform calculator-style expression evaluation and worksheet-based conversion modes.

Unitary is free software, both libre and gratis. It does not and will never contain ads, paywalls, subscriptions, in-app purchases, tracking, data harvesting, or any other monetization scheme. See the privacy policy for specifics.

Getting Unitary

Everything works offline. The only network access Unitary ever performs is fetching currency exchange rates, and built-in rates are bundled so currency conversion works without a connection too.

What it does

Freeform mode

A calculator that understands units. Type any expression into the "Convert from" field, and optionally a target expression into "Convert to":

Convert from Convert to Result
5 ft + 3 in cm 160.02 cm
3e4 kilometers/week mph 110.95914 mph
sqrt(9 m^2) + sin(45 degrees) * 5 ft m 4.0776307 m
tempF(212) tempC tempC(100)
100 USD EUR (at the current rate)

Full dimensional analysis runs through every calculation: adding meters to seconds is an error, converting joules to kilowatt-hours just works, and exponents, functions, and SI prefixes all carry their dimensions correctly.

Freeform mode converting 5 ft + 3 in to centimeters

Worksheet mode

Convert one value across many units at once. Pick a worksheet, type a value into any row, and every other row updates in real time. Twelve worksheets are built in: Angle, Area, Currency, Digital Storage, Energy, Length, Mass, Pressure, Speed, Temperature, Time, and Volume. Your entries persist across sessions.

Length worksheet converting 100 meters across nine other units

Unit browser

Browse the entire unit catalog – over 7,000 units, 125 prefixes, and 100+ functions imported from the GNU Units database – alphabetically or grouped by physical dimension, with search and per-unit detail pages showing definitions, aliases, and resolved values.

Unit browser showing collapsed dimension groups above the expanded Area group Detail page for the newton, showing its aliases, definition, and value

Currency conversion

Live exchange rates (including precious metals XAU/XAG/XPT) are fetched automatically from the Frankfurter API when the stored rates are more than a day old, and can be refreshed manually from Settings or the Currency worksheet. Rates are stored on the device, so currency conversion keeps working offline.

Currency worksheet converting 100 Australian dollars, with the rate-freshness banner

Designed for daily use

Settings screen in dark mode Settings screen in light mode

Development

Unitary is built with Flutter (Dart). The expression engine and unit system are pure Dart with no Flutter dependency; state management uses flutter_riverpod, and persistence uses shared_preferences.

Building from source

git clone https://github.com/wisnij/unitary.git
cd unitary
flutter pub get
flutter run

Running tests

flutter test --reporter failures-only   # full unit/widget suite
flutter analyze                         # lint check
tool/run_integration_tests.sh           # on-device tests (Android emulator)

Documentation

Project status

Unitary is feature-complete for its MVP, with polish and testing complete, and is now preparing its first public release. Over 2,000 automated tests cover the expression engine, unit system, and UI, plus an on-device integration test suite run in CI. See the Implementation Plan for the detailed roadmap, including planned post-MVP features such as custom unit definitions, worksheet customization, and iOS support.

Contributing

Bug reports, feature requests, and pull requests are welcome – see CONTRIBUTING.md for guidelines, and the documentation links above for how the codebase fits together.

License

Copyright © 2026 Jim Wisniewski wisnij@gmail.com

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Contributors

This program includes data files that are part of GNU Units. GNU Units is copyright © 1996-2002, 2004-2020, 2022, 2024, 2026 Free Software Foundation, Inc.