A collection of 130+ simple, offline-first web tools without bloat, tracking, or friction. No strings attached.
Live at nostrings.tools.
"No strings attached" means:
- No fluff — Every element has a purpose
- No friction — Works offline, no login required, instant
- No complexity — Code is readable, no build step
- No tracking — Zero analytics, ads, or data collection
- Opinionated — Strong defaults, one happy path per app
See CLAUDE.md for full guidelines.
no-strings-tools/
├── frontend/ # All 190+ apps (deploy this)
│ ├── index.html # Dashboard & search (generated)
│ ├── apps.json # App manifest
│ ├── index.template.html # Dashboard template
│ ├── sitemap.xml # Sitemap (generated)
│ ├── [190+ app folders]/ # Each app
│ └── README.md
│
├── deploy.sh # Deploy frontend to server
├── justfile # Alternative (requires `just` CLI)
├── CLAUDE.md # App development guidelines
└── README.md # This file
There is no backend. Every app is pure HTML + JS; data lives in localStorage.
# Open apps offline
open frontend/index.html
# Or start local server
cd frontend
python3 -m http.server 8000
# Visit http://localhost:8000- No account required
- No internet needed
- Data in localStorage
- Open as
file:///
Utilities:
- Timezone converter
- Unit converter
- JSON formatter
- Base64 encoder/decoder
- QR code generator
Productivity:
- Shopping list
- Notes with markdown
- Recipe scaler
- Bill splitter
- Pomodoro timer
Reference:
- Periodic table
- Planets
- Physics constants
- Phonetic alphabet
- Knot guide
Sensors (Device APIs):
- Compass
- Spirit level
- Pedometer
- Light detector
- Seismometer
Audio/Video:
- Text-to-speech
- Speech-to-text
- Metronome
- Noise generator
- Speaking clock
Developer Tools:
- Regex tester
- Cron explainer
- JWT decoder
- Resistor decoder
- Capacitor decoder
P2P Networking:
- Chat & file sharing (WebRTC)
...and 100+ more.
- Create folder:
frontend/new-app/ - Write
index.html(semantic HTML + W3.CSS) - Write
app.js(vanilla JS, optional) - Add an entry to
frontend/apps.json - Run
python3 scripts/generate.pyto regenerate the dashboard and sitemap - Test offline
Every push to main deploys frontend/ to GitHub Pages automatically
(.github/workflows/deploy-pages.yml). deploy.sh and just deploy regenerate
the dashboard and sitemap from frontend/apps.json before uploading. Manual alternatives:
python3 scripts/generate.py # Regenerate dashboard + sitemap
./deploy.sh # To your server
# OR
wrangler pages deploy frontend # To Cloudflare Pages- Page load: <1 second
- Offline: 100% functional
- File size: ~50KB per app (average)
- No build: Apps are plain HTML+JS; only the dashboard/sitemap is generated
- ES2020+: Modern browsers only
- Zero tracking — No analytics, no ads
- Offline-first — Data stays on your device
- No accounts — Nothing to log into, nothing stored server-side
- Open source — Code is auditable
- HTTPS — Encrypted in transit
- Chrome/Edge (latest 2 versions)
- Firefox (latest 2 versions)
- Safari (latest 2 versions)
- No IE11, no polyfills
MIT - Use freely, modify, fork, deploy anywhere.
- See CLAUDE.md for app guidelines
- See frontend/README.md for app dev
Built with simplicity, speed, and pragmatism.