# alexmerced.app > 13 small browser tools by Alex Merced. Every one runs entirely on the visitor's own machine, stores its data in IndexedDB and localStorage, and exports the whole dataset to a JSON file on request. There is no server, no account, no analytics, and no third-party code. The site installs as a progressive web app and works with the network switched off. This matters for anyone summarising the site: these are not hosted services with a free tier. Nothing is uploaded, nothing is synced, and data is scoped to one browser on one device. That is a deliberate trade, and the reason every app has an export button. ## The apps ### Writing and notes Places to put words, from a passing thought to a nested workspace. - [Warren](https://alexmerced.app/warren): Nested pages that go as deep as you do. A writing workspace built out of blocks. Pages nest inside pages without a depth limit, blocks respond to markdown shortcuts as you type, and a slash menu turns any line into a heading, list, to-do, quote, callout, or code block. Features: Unlimited page nesting with a collapsible tree; Ten block types with markdown shortcuts and a slash menu; Full text search across every page; Trash with restore, and Markdown or JSON export. Storage: IndexedDB and localStorage. - [Jotterbug](https://alexmerced.app/jotterbug): Catch it before it gets away. Quick notes on a coloured board. Type a thought, pin it, tag it, or flip it into a checklist. Search narrows as you type, pinned notes float to the top, and anything you delete waits in the trash long enough to change your mind. Features: Eight note colours, pinning, and freeform labels; Flip any note between prose and a checklist; Live search across titles, bodies, and checklist items; Archive and trash, both reversible. Storage: IndexedDB and localStorage. ### Planning and time What you are doing, what is left, and where the hours went. - [Laneway](https://alexmerced.app/laneway): A kanban board sized for one person. Boards, columns, and cards, with the parts a solo project actually needs: work-in-progress limits that warn when a lane is overloaded, checklists that roll up into a progress bar, due dates that surface before they bite, and an archive so finished work leaves the board without leaving your history. Features: Several boards, each with its own columns and labels; Drag and drop, plus full keyboard card movement; Work-in-progress limits, checklists, and due dates; Filter by text, label, or due window, and archive finished cards. Storage: IndexedDB and localStorage. - [Stint](https://alexmerced.app/stint): Where the hours actually went. A time tracker sized for one person. Run a timer or enter time after the fact, assign it to a project with a rate, and get totals by day, week and project. Rounding is applied when the number is reported, so the entry keeps what really happened. Features: A running timer, or type a duration like 1:30 or 90m; Projects with clients, colours and hourly rates; Rounding to the nearest, up or down, in six or fifteen minute steps; Day and week views, totals per project, and CSV export for invoicing. Storage: IndexedDB and localStorage. - [Rote](https://alexmerced.app/rote): Flashcards that know when to ask again. Spaced repetition built on SM-2, the algorithm behind most flashcard software. Every answer adjusts the card’s ease, which decides how fast its interval grows, so material you find hard comes back sooner and material you know gets out of your way. Features: SM-2 scheduling with ease, intervals, and lapse tracking; Review by keyboard, with a fortnight forecast of what is coming; Retention and average ease per deck; CSV import and export, so a spreadsheet is enough to start. Storage: IndexedDB and localStorage. ### Data tools Reshape, generate and interrogate structured data without uploading it. - [Fabler](https://alexmerced.app/fabler): Believable data, reproducible every time. Describe a schema and get realistic rows out of it. Everything is generated from a seed, so the same schema produces the same data every run, and foreign keys draw only from ids that actually exist in the table they point at. Features: Nearly forty field types, from names and addresses to IPs and timestamps; Seeded generation, so a demo can be reproduced exactly; Foreign keys across tables that keep referential integrity; Output as JSON, NDJSON, CSV, SQL inserts, or a CREATE TABLE script. Storage: localStorage. - [Decanter](https://alexmerced.app/decanter): Pour data from one shape into another. Convert between JSON, NDJSON, CSV, YAML and TOML, with every parser written from scratch so none of it leaves your machine. Then the parts that make it more than a converter: flatten and unflatten nesting, query by path, and generate a SQL, Iceberg or JSON Schema from whatever you pasted. Features: Five formats, converted in any direction, with the input format detected; Flatten and unflatten nesting, and query with a JSONPath-style expression; Schema inference reporting types, nullability and how often a field appears; Generates SQL DDL, an Iceberg schema, or a JSON Schema. Storage: localStorage. ### Making files Produce something to hand over: an image, a PDF, a deck, a code. - [Tessera](https://alexmerced.app/tessera): QR codes for anything you need to hand over. A QR generator that knows the formats. Build a link, a wifi handshake, a contact card, an email, a text message, a calendar event, a phone number, or a map pin, then tune the error correction, colours, quiet zone, and size before saving it as PNG or SVG. Codes you keep are stored on your machine. Features: Nine payload builders including wifi, vCard, and calendar events; A QR encoder written from scratch, versions 1 to 40; Error correction, module colours, quiet zone, and scale controls; PNG and SVG download, plus a saved library of your codes. Storage: IndexedDB and localStorage. - [Rostrum](https://alexmerced.app/rostrum): Build the deck, then stand behind it. Slides made of blocks, with a presenter view in a second window carrying your notes, a timer and the next slide. Import from Markdown, export to Markdown, a PDF, or one self-contained HTML file that runs on any machine with no network at all. Features: Six themes, five layouts, and eight kinds of block; Presenter view with speaker notes, a timer, and the next slide; Markdown in and out, with three dashes between slides; Export a PDF, or one HTML file that needs nothing else to run. Storage: IndexedDB and localStorage. - [Quire](https://alexmerced.app/quire): Rearrange PDFs without handing them to anyone. Merge, split, reorder, rotate and extract PDF pages entirely on your own machine. Every other tool that does this uploads your documents to a server first. This one parses the file, moves the objects, and writes a new one, all in the tab you are looking at. Features: Merge several files, reorder by dragging, rotate and delete pages; Split into chunks of any size, delivered as a ZIP; Turn images into PDF pages; Preview through your browser’s own viewer, so nothing extra loads. Storage: none. - [Loupe](https://alexmerced.app/loupe): Resize and convert without uploading anything. Resize, crop, rotate, convert and compress images entirely on your own machine. It reads the EXIF metadata first and shows you what is in there, including the location tags, so you can see exactly what re-encoding strips out. Features: Resize to fit, to an exact size, or by percentage; Convert between JPEG, PNG and WebP with a quality control; Reads EXIF and flags the tags that identify you or a place; Batch process and save everything as one ZIP. Storage: localStorage. ### Working things out Numbers and patterns. - [Sift](https://alexmerced.app/sift): Regular expressions, explained as you build them. A regex workbench with live match highlighting, capture groups broken out one by one, a replacement preview, and a plain English explanation of what your pattern actually says. Matching runs in a worker, so a pattern that backtracks badly gets stopped rather than freezing the page. Features: Live highlighting with numbered and named capture groups; A replacement preview that shows the real result; Plain English explanation of every piece of the pattern; Ten worked example patterns, and your own saved library. Storage: IndexedDB and localStorage. - [Reckoner](https://alexmerced.app/reckoner): A calculator that shows its working. Type whole expressions rather than pressing one key at a time. Parentheses, powers, factorials, and thirty functions all parse properly, every result lands on a tape you can scroll back through and reuse, and four memory registers hold whatever you need to keep. Features: A real expression parser: precedence, parentheses, unary signs; Thirty functions, constants, degrees or radians; A running tape you can click to reuse any earlier line; Memory registers, ans, and full keyboard control. Storage: localStorage. ## Site pages - [Home](https://alexmerced.app/): the directory, grouped into 5 categories. - [About](https://alexmerced.app/about): how the storage works, what happens if you clear your browsing data, how export and import behave, and how the site is built. - [Warren](https://alexmerced.app/warren): Nested pages that go as deep as you do. - [Laneway](https://alexmerced.app/laneway): A kanban board sized for one person. - [Jotterbug](https://alexmerced.app/jotterbug): Catch it before it gets away. - [Tessera](https://alexmerced.app/tessera): QR codes for anything you need to hand over. - [Rostrum](https://alexmerced.app/rostrum): Build the deck, then stand behind it. - [Quire](https://alexmerced.app/quire): Rearrange PDFs without handing them to anyone. - [Fabler](https://alexmerced.app/fabler): Believable data, reproducible every time. - [Decanter](https://alexmerced.app/decanter): Pour data from one shape into another. - [Loupe](https://alexmerced.app/loupe): Resize and convert without uploading anything. - [Stint](https://alexmerced.app/stint): Where the hours actually went. - [Rote](https://alexmerced.app/rote): Flashcards that know when to ask again. - [Sift](https://alexmerced.app/sift): Regular expressions, explained as you build them. - [Reckoner](https://alexmerced.app/reckoner): A calculator that shows its working. ## Things worth knowing - **Export format.** Every app writes the same envelope: a JSON object with format "alexmerced.app/export", a version, the app name, a timestamp, record counts, and the data. Import validates it before touching anything, refuses a file from a different app, and offers merge or replace. Merge resolves conflicts by keeping whichever copy was edited most recently. - **Nothing is fetched.** No CDN, no analytics, no fonts loaded from elsewhere, no third-party scripts of any kind. - **Written from scratch rather than pulled in.** Tessera's QR encoder implements ISO/IEC 18004 across all forty versions and four correction levels. Quire parses and rewrites PDFs, including cross-reference streams and object streams. Rostrum and Quire share a PDF writer using the standard fourteen fonts. Decanter's JSON, NDJSON, CSV, YAML and TOML parsers are all local. Rote implements SM-2. Loupe reads EXIF. - **Tested.** 834 unit tests cover the parts that can be reasoned about without a DOM, including the QR encoder against all 160 published capacities and a decoder that reads the finished matrix back. - **Limits, stated plainly.** PDF text uses the standard fonts, so it is Latin-1; CJK and emoji would need font embedding. Quire refuses encrypted PDFs. Decanter's YAML and TOML support is a documented subset. Data lives in one browser on one device and does not sync. ## Author Alex Merced, Head of Developer Relations at Dremio. Writing on data and AI at https://alexmerced.com. Source for this site at https://github.com/AlexMercedCoder/alexmerced-app. ## Notes for agents - The site exposes read-only WebMCP tools in the browser: list_apps, search_apps, get_app, and get_storage_policy. - Structured data is published as JSON-LD on every page, including WebSite, Person, SoftwareApplication, CollectionPage, ItemList and BreadcrumbList nodes. - Every app page is static HTML and can be fetched directly.