# Free tools that never see your files.

Shrink a photo, turn a HEIC into a JPG, mint a password, work out a time zone. Every one of them runs on your own device — nothing is ever uploaded.
Try “heic to jpg”, “compress”, “password”…GoSearch

- Popular:
- [HEIC to JPG](/images/convert/heic-to-jpg)
- [Compress JPG](/images/compress/jpg)
- [Resize a photo](/images/resize)
- [Password generator](/generate/password-generator)
- [Timezone converter](/time/timezone-converter)
[6 toolsPhotos31 formats, 264 routesMost used31](/images) [8 toolsTextCount and convertMost usedWord & character count](/text) [1 toolColorConvert, check contrastMost used1](/color) [5 toolsConverterEveryday mathMost used5](/converters) [4 toolsDeveloperRegex, cron, semver, globMost usedRegex tester](/dev) [3 toolsEncodingText in, text outMost usedBase64](/encoding) [3 toolsGeneratePasswords, tokens, UUIDsMost usedPassword generator](/generate) [4 toolsCryptoText or filesMost usedHash generator](/crypto) [9 toolsJSONPaste, format, validateMost usedJSON formatter](/json) [9 toolsWebTokens, decoded locallyMost usedJWT decoder](/web) [6 toolsConfigMost used6](/config) [6 toolsBrowserMeasured in your tabMost usedBrowser report](/browser) [8 toolsDeviceHardware, tested liveMost usedWebcam test](/device) [10 toolsNetworkSubnet math, exactMost usedIPv4 subnet calculator](/network) [6 toolsAITokens, costs, exportsMost usedTokenizer playground](/ai) [3 toolsSkySun and moon, preciselyMost used3](/sky) [6 toolsFilesMost used6](/files) [6 toolsDataMost used6](/data) [1 toolQRLinks, scannableMost usedQR generator](/qr) [6 toolsTimeZones and durationsMost usedTimezone converter](/time) SoonVideoIn the workshopComingMP4, WebM, MOVSoonAudioIn the workshopComingMP3, WAV, FLAC110tools live now31photo formats264ways to convert0bytes we ever receive

## Our most popular tools

All free, no catch, nothing uploaded.
All toolsPhotosTextColorConverterDeveloperEncodingGenerateCryptoJSONWebConfigBrowserDeviceNetworkAISkyFilesDataQRTimeComing soon[ConvertPhotos

HEIC, JPG, PNG, WebP, AVIF, RAW and 25 more. 264 pairs.
](/images/convert) [CompressPhotos

Smaller file, keeping the quality that actually matters.
](/images/compress) [OptimizePhotos

The best quality per byte, tuned for each format.
](/images/optimize) [ResizePhotos

Exact pixels, aspect ratio locked.
](/images/resize) [Encoder benchmarkPhotos

Compare codecs head to head on your own machine.
](/images/benchmark) [Format supportPhotos

What image formats THIS browser actually decodes — measured, not a compatibility table.
](/images/format-support) [Word & character countText

Words, characters, graphemes, sentences, lines, and bytes — counted by the same rules every time.
](/text/word-count) [Case converterText

One text in, fourteen casings out — camel, snake, kebab, and more.
](/text/case-converter) [Markdown ⇄ HTMLText

Render Markdown to HTML, convert HTML back — with a DOMPurify-sandboxed preview.
](/text/markdown) [Markdown tableText

CSV, TSV, or pipe text in — an aligned GFM table out, pipes escaped.
](/text/markdown-table) [Unicode inspectorText

Every code point with bytes, escapes, entities, and normalization forms.
](/text/unicode) [Mojibake repairText

Undo UTF-8-read-as-windows-1252 garbling — verified by byte round-trip, never guessed.
](/text/mojibake) [SMS counterText

GSM-7 or UCS-2, parts, and characters left — the 3GPP TS 23.038 math.
](/text/sms) [Line operationsText

Sort, dedupe, trim, filter, renumber — deterministic cleanup with a changelog.
](/text/lines) [Color converter & contrastColor

HEX, RGB, HSL, and HSV from one color, plus the WCAG contrast ratio against another.
](/color/converter) [Unit converterConverters

Length, mass, temperature, data, and more — one value in, every unit out, reference conditions stated.
](/converters/units) [FractionsConverters

Decimals to fractions and back — exact rationals, mixed numbers, repeating decimals marked.
](/converters/fractions) [StatisticsConverters

Mean, median, mode, variance, deviation, quartiles — paste numbers, get every measure.
](/converters/statistics) [Prime / GCD / LCMConverters

Primality, factorization, next/previous prime, ranges, and multi-number GCD/LCM — exact BigInt.
](/converters/primes) [Aspect ratio & DPIConverters

Exact aspect ratios, resize targets that lock the ratio, PPI from real dimensions, print sizes.
](/converters/aspect-ratio) [Regex testerDeveloper

Test a regular expression against your own text — the browser’s own engine, in a disposable worker.
](/dev/regex-tester) [Cron explainerDeveloper

Explain a cron schedule in plain English and list its next fire times, dialect and timezone explicit.
](/dev/cron) [Semver compareDeveloper

Sort versions, compare two, and match ranges — strict SemVer 2.0.0, coercion shown separately.
](/dev/semver) [Glob testerDeveloper

Test glob patterns against a list of paths — picomatch in a bounded worker, dialect explicit.
](/dev/glob-tester) [Base64Encoding

Encode and decode, with a URL-safe alphabet option.
](/encoding/base64) [URL encoderEncoding

Percent-encode components or whole URIs, and back.
](/encoding/url-encoder) [Image ⇄ Base64Encoding

Image files to data URLs and back — format read from bytes, dimensions decoded, nothing re-encoded.
](/encoding/image-base64) [Password generatorGenerate

Properly random, with an honest strength meter.
](/generate/password-generator) [Random token generatorGenerate

API keys, hex secrets, nanoids, and sortable ULIDs — CSPRNG, entropy stated.
](/generate/random-token) [UUID generatorGenerate

RFC 9562 UUIDs — v1, v3, v4, v5, v6 and v7.
](/generate/uuid-generator) [Hash generatorCrypto

SHA-2, SHA-3, Keccak, BLAKE and legacy checksums, for text or files.
](/crypto/hash) [Password strengthCrypto

Score a password with zxcvbn — the guessing model, with matched patterns shown.
](/crypto/password-strength) [HMACCrypto

Keyed MACs over text — SHA-1/256/384/512 through WebCrypto, keys as text/hex/base64.
](/crypto/hmac) [bcryptCrypto

Hash with bcryptjs cost 4–15 in a disposable worker; verify against a pasted hash.
](/crypto/bcrypt) [JSON formatterJSON

Pretty-print or minify, sort keys, and validate.
](/json/formatter) [JSON ValidatorJSON

Check strict JSON or JSONC, then explore it as a tree.
](/json/validator) [JSON SortJSON

Sort object keys — top level or every level.
](/json/sort) [JSON String EscapeJSON

Escape raw text into a JSON string body, and back.
](/json/escape) [JSON QueryJSON

Pull values out with JSON Pointer or a JSONPath subset.
](/json/query) [JSON DiffJSON

Semantic and text comparison of two documents, with an RFC 6902 patch export.
](/json/diff) [JSON ConverterJSON

Convert JSON to and from YAML, TOML, CSV, XML, NDJSON, query strings, .env, MessagePack, CBOR, and BSON.
](/json/convert) [JSON to CodeJSON

Generate TypeScript, Go, Rust, and Zod from JSON.
](/json/codegen) [JSON Schema ValidatorJSON

Validate JSON against a JSON Schema — 2020-12, 2019-09, or draft-07 — with every rule stated up front.
](/json/schema) [JWT decoderWeb

Inspect headers and claims; verify signatures with a local key.
](/web/jwt) [TOTP generator & verifierWeb

RFC 6238 codes from an authenticator secret — plus code verification with clock-drift window.
](/web/totp) [PKCE pairWeb

Generate an RFC 7636 verifier/challenge pair, or check a pair against each other.
](/web/pkce) [Subresource integrityWeb

Hash a script or stylesheet into an integrity= attribute — text or file.
](/web/sri) [Authorization headerWeb

Parse an Authorization header — Basic decodes, Bearer shape-checks, Digest splits.
](/web/auth-header) [CSP evaluator & builderWeb

Evaluate a Content Security Policy with csp_evaluator — or build one, finding by finding.
](/web/csp) [SAML inspectorWeb

Read a SAML response — fields, attributes, conditions — and check its signature.
](/web/saml) [Certificate & CSRWeb

X.509 certificates and CSRs — subject, SANs, validity window, key facts.
](/web/certificate) [JWK / JWKSWeb

Inspect a JSON Web Key or JWKS — members, thumbprint, PEM form.
](/web/jwk) [.env editorConfig

Inspect and format .env files — duplicates, exports, quoting rules named.
](/config/env) [INI editorConfig

Parse INI — sections, dotted paths, boolean coercions, last-wins duplicates.
](/config/ini) [.properties editorConfig

Java properties — dotted keys, escapes decoded, comments counted.
](/config/properties) [chmod calculatorConfig

Octal ⇄ symbolic permission modes, special bits named for what they do.
](/config/chmod) [CSV → SQLConfig

Paste CSV, get INSERT statements — quoted per standard SQL, NULLs by your choice.
](/config/csv-to-sql) [docker run → composeConfig

Turn a docker run command into a compose service — unmapped flags listed, never dropped.
](/config/docker) [Browser reportBrowser

Every identity field your browser volunteers — read live in this tab, caveats included.
](/browser/ua-report) [UA parserBrowser

Paste any user-agent string, see the browser, engine, OS, and device it claims.
](/browser/ua-parser) [Capability dashboardBrowser

Which APIs this browser has — presence measured, permissions only queried, never asked.
](/browser/capabilities) [Feature supportBrowser

A dated web-platform snapshot checked live — where this browser agrees, leads, or lags.
](/browser/feature-support) [Screen & viewportBrowser

Screen, DPR, layout and visual viewports, orientation, preferences — live, fingerprinting labeled.
](/browser/screen) [Deep probesBrowser

Fonts, codecs, WebGL/WebGPU, storage, permissions — the five probes that need real work.
](/browser/probes) [Webcam testDevice

See yourself, read the track's real settings, switch cameras — permission only on your click.
](/device/webcam) [Microphone testDevice

A live level meter over the real stream — nothing recorded, permission only on your click.
](/device/microphone) [Speaker testDevice

Left, right, both — three synthesized tones; your ears do the checking.
](/device/speakers) [Keyboard testDevice

Press keys in the zone — see key, code, location, and modifiers exactly as the browser sees them.
](/device/keyboard) [Gamepad testDevice

Buttons with real names under standard mapping, live axes, an explicit vibration pulse.
](/device/gamepad) [Dead pixel testDevice

Five solid colors, full screen — your eyes are the detector, and the page says so.
](/device/dead-pixel) [Refresh rateDevice

A four-second frame-timestamp sample — median-interval Hz with every caveat kept honest.
](/device/refresh-rate) [Screen recorderDevice

Record your screen, a window, or a tab — permission on your click, every resource released on stop, output verified.
](/device/screen-recorder) [IPv4 subnet calculatorNetwork

Network, broadcast, mask, wildcard, host counts — exact BigInt math on your CIDR.
](/network/ipv4-subnet) [IPv6 expand & compressNetwork

Expand, compress, and canonicalize IPv6 — RFC 5952 rules applied and named.
](/network/ipv6-format) [IPv6 prefix calculatorNetwork

First and last address, exact 2^n capacity, arpa prefix — for any /0–/128.
](/network/ipv6-subnet) [IP range classifierNetwork

Private, reserved, or special-purpose — checked against a dated IANA registry snapshot.
](/network/ip-classify) [IP number formsNetwork

IPv4/IPv6 as integer, hex, and binary — exact both directions.
](/network/ip-numbers) [VLSM plannerNetwork

Allocate unequal subnets from one base — every sizing decision visible as a step.
](/network/vlsm) [Subnet split & aggregateNetwork

Split a block into equal children, or merge siblings back — preconditions refused honestly.
](/network/subnet-split) [MAC & EUI-64Network

Every MAC notation, the U/L and group bits named, the EUI-64 and its fe80:: derivation.
](/network/mac-eui64) [Port referenceNetwork

A dated, curated IANA port snapshot — search numbers, names, and protocols.
](/network/ports) [Bandwidth calculatorNetwork

Transfer time at a line rate — exact fractions, both unit bases, no fake efficiency.
](/network/bandwidth) [Tokenizer playgroundAI

Count and inspect OpenAI tokens — o200k, cl100k, p50k, r50k, in a worker.
](/ai/tokenizer) [Context fitAI

Does your prompt fit? Exact OpenAI counts; labeled estimates for any other model.
](/ai/context-fit) [API cost estimatorAI

What a prompt costs to run — dated price data, exact arithmetic, tiers applied.
](/ai/cost-estimator) [Fine-tune JSONL formatterAI

Validate and format training files — target presets, per-line errors, loss ledger.
](/ai/jsonl-formatter) [Chat export viewerAI

Read a ChatGPT export or JSONL log — virtualized, local, nothing sent anywhere.
](/ai/chat-export) [Chat template rendererAI

Render a transcript to ChatML, Llama, Mistral, or Gemma format — with token counts.
](/ai/chat-template) [Sunrise & sunsetSky

Every twilight phase of one day — dawn to dusk, on the place's own clock.
](/sky/sunrise-sunset) [Golden hourSky

Golden and blue hour windows — altitude-crossing boundaries, durations included.
](/sky/golden-hour) [Moon phaseSky

Illumination, named phase, moonrise and moonset, and the next new and full moons.
](/sky/moon-phase) [PDF inspectorFiles

Page count, page sizes, metadata, and which pages carry text — read from structure, nothing rendered.
](/files/pdf-inspect) [PDF page toolsFiles

Extract, delete, or rotate pages by an explicit spec — output re-loaded and verified before download.
](/files/pdf-pages) [ZIP inspector & builderFiles

List ZIP contents without inflating them — sizes, ratios, traversal flags — extract single entries or build a new archive.
](/files/zip) [Photo metadataFiles

See what a photo discloses — GPS, device, dates, software — then re-encode it clean, verified.
](/files/exif) [Font inspectorFiles

Read TTF, OTF, and WOFF files — names, metrics, glyph count, tables, axes — with a sandboxed sample outline.
](/files/font) [SVG sanitizerFiles

Disclose what an SVG carries — scripts, handlers, external refs — then get a copy that cannot fetch or run anything.
](/files/svg) [Fake namesData

Fake names from a locale’s own pools — first, last, and full — seeded so every list reproduces.
](/data/name) [Fake addressesData

Fake street, city, region, postcode, and country rows in the locale’s pattern — shapes for tests, never locations.
](/data/address) [Fake phone numbersData

Phone numbers that match a locale’s pattern — for form tests, with no live/dead claim anywhere.
](/data/phone) [Fake peopleData

Whole fake people — name, username, example-domain email, phone, birthday, job, address — one seeded row.
](/data/person) [Fake companiesData

Invented company names with catch phrase and buzz phrase — fixture businesses matching no registry.
](/data/company) [Bulk test dataData

Thousands of fake rows for tests — pick columns, lock a seed, export JSON, JSONL, or CSV.
](/data/test-data) [QR generatorQR

A scannable QR code for any link or text — PNG or SVG, in your browser.
](/qr/generator) [Timestamp converterTime

Unix to ISO 8601 and back, with relative time.
](/time/timestamp-converter) [Timezone converterTime

One moment across every zone, laid out side by side.
](/time/timezone-converter) [Duration converterTime

Milliseconds up to weeks, with a human breakdown.
](/time/duration-converter) [Availability sharerTime

Share free slots by link. No calendar connection.
](/time/availability) [Date mathTime

Add durations to a date and diff two dates — wall-clock vs elapsed across DST, both stated.
](/time/date-math) [Calendar converterTime

Gregorian ⇄ Hijri, Hebrew, Persian, Chinese, and eleven more — your browser's ICU tables.
](/time/calendar-converter) [Time hubTime

Every time utility in one place. No files needed.
](/time) Why we're different

## Everyone says they delete your files. We never get them.

A promise to delete is something you have to take on trust. This isn't a promise — there's no upload step, so no copy of your photo exists on any machine but yours. Nothing to leak, nothing to subpoena, nothing to quietly train a model on.
[See how it works](#how-it-works-steps)

1. 1Pick the toolIt opens working. No account wall.
2. 2Your device does the workWebAssembly codecs, on your own processor.
3. 3Save it and goWorks with the wi-fi off, once loaded.

## The website is free. Properly free.

No daily limit, no watermark, no “upgrade to download”. Pay only if you want the desktop app, and that isn't out yet.
What you're usingFree$0forever

The whole web toolbox, no strings attached.

- Every tool in the browser
- No account, no email address
- No cap on how much you convert
- Keeps working with the wi-fi off
[Start using it](/images) ProComing soon$9/ month

The desktop app, for when a whole folder needs doing.

- Everything in Free
- A real app for Mac and Windows
- Works with no internet at all
- Do a whole folder in one go
- Cancel whenever you like
Coming soonPro, yearlyComing soon$90/ year

Exactly the same Pro, with two months on the house.

- Everything in Pro
- Two months free versus monthly
- One payment, then forget about it
- Cancel whenever you like
Coming soonPro — the desktop app$9 / month, or $90 / yearSoon

## The questions everybody asks

### So my photos really aren't uploaded?

Really. The converters run inside the page. Your file goes from disk into the browser's memory, through your own processor, and back out as a download. The only thing fetched over the network is the page itself.

### Do I have to sign up?

No. Every tool works without an account, a quota, or an email address. There's nothing to verify and no newsletter waiting on the other side.

### How big a file can it handle?

That depends on your computer, not on us — the work happens in your browser's memory. Batch jobs run one file at a time to stay comfortably inside it.

### Will it open photos from my iPhone?

Yes — HEIC is handled, along with camera RAW from most DSLRs: CR2, NEF, ARW and DNG. Drop one in and choose what you want out the other side.

### Does it work on a plane?

Once a tool page has loaded, yes. Everything it needs is already in the page, so you can cut the connection and carry on working.

### What's the catch on “free”?

There isn't one on the website — your device does the computing, so it costs us almost nothing to run. The paid part is the desktop app, and it's still being built.

---

Canonical HTML: https://nutter.tools
Markdown version: https://nutter.tools/index.md
Plain-text version: https://nutter.tools/index.txt
Agent index: https://nutter.tools/llms.txt

