Independent software

Software that does less, better.

lkutils is a one-person software label. Its first product, Paper Lens, is an Android document scanner with no internet permission, no account and no analytics — not as a promise on a page like this one, but because the code that would break the promise was never written.

A photograph of a page, and the same page corrected. This is the one thing a scanner has to get right, and most of the work is in the difference between these two halves.
Permissions requested
OneThe camera. That is the entire list, and it is asked for on the screen that needs it.
Trackers and accounts
NoneNo analytics, no advertising, no crash reporting, no sign-in, no third-party SDK that phones home.
Works offline
AlwaysEvery feature works in airplane mode, including the text recognition. There is no server to be down.
01 Work

What has been made so far.

One product at a time, finished before the next one starts.

The Paper Lens app icon: a page seen at an angle, on indigo.

Paper Lens

In internal testing

An Android document scanner. It finds the page while you hold the phone, flattens the perspective, reads the text on the device so you can search inside your scans, and writes a PDF by embedding the photographs it already took — without decoding or re-encoding a single one of them. Your scans are ordinary JPEGs in a folder you chose, and they are still there after you uninstall it.

Android 11+ Kotlin Jetpack Compose On-device OCR No network
Read about Paper Lens
Next

The next one is not here yet.

There are small tools running quietly behind lkutils that are not fit to hand to anybody else. When one of them is, it will appear on this page and not before. If you want to be told when that happens, an email is the whole subscription mechanism.

Ask to be told
02 Approach

Five things that are not negotiable.

These are the rules the code is actually written against, not a values page. Each one costs something, and each one is worth what it costs.

01

Privacy is architecture, not a policy.

Paper Lens does not declare the internet permission. It is structurally incapable of sending your documents anywhere, whatever any page claims. A privacy policy you have to trust is worth less than a binary that cannot do the thing.

02

Offline, permanently.

Every feature works in airplane mode — including text recognition, which runs on a model that ships inside the app. Nothing is rented from a server that can be switched off in three years.

03

Native, not wrapped.

Kotlin and Jetpack Compose, against the platform's own APIs. No web view pretending to be an app, no cross-platform layer between your finger and the camera.

04

Measured, not asserted.

Cold start, capture latency, memory at peak, download size: each has a budget, and each is measured on a real phone in a release build before a version ships. Exceeding a budget is treated as a bug, not a trade-off.

05

Accessibility is part of done.

A screen reader walk, 48 dp touch targets, real contrast ratios and a pass at 200% text are on the checklist for every release. The crop tool can be driven without sight, because a scanner that cannot is only finished for some people.

03 About

One developer, and a short list.

lkutils is the software label of Lalit Khokhar. It exists to put out a small number of native applications that are genuinely finished, rather than a large number that are nearly finished.

The method is unglamorous: pick something people already use every day, work out which nine tenths of it are noise, and build the remaining tenth properly. Paper Lens is the first result. It has been rebuilt more than once because a screen needed explaining, which is the sign that it was designed wrong.

This website

Colophon

  • Static HTML, hand-written. No framework, no build step.
  • No cookies. No analytics. Nothing to consent to.
  • No fonts, scripts or images loaded from anyone else's server.
  • One stylesheet and one small script, both first-party.
  • Hosted on Cloudflare Pages. Source is public on GitHub.

04 — Contact

Say something.

Questions about Paper Lens, bug reports, accessibility problems, press, or a note to say a thing is broken — all of it goes to one address, and it is read by the person who wrote the code.

There is no contact form here, because a form would need a server, and a server would need to be told about on the privacy page.

Email

Expect a reply within a few days. Anything that has lost data goes to the front of the queue — say so in the subject line.