About TinyShare

A browser-only file encryption tool. This page lists every planned feature and its real status today.

Why browser-only

Most file-sharing services ask you to trust their servers with your files. TinyShare takes the opposite approach: everything happens on your device, and you decide how the encrypted package travels. The trade-off is that a static website cannot host files, enforce expiry or count downloads, so TinyShare does not claim to. See the security model for details.

TinyShare is free and has no accounts. It is funded by its owner; if advertising is ever added it will be limited to informational pages and kept out of the encryption and decryption tools.

Feature status

Every requirement from the product specification, with its real status in this build. R1 is the launch scope; R2 and R3 are later phases; X marks things excluded on purpose.

IDPhaseFeatureStatusNotes
TS-001R1Select multiple local filesDoneNames, sizes and types listed before anything happens. Nothing is uploaded.
TS-002R1Package manifestDoneVersion, file IDs, names, sizes, type hints and SHA-256 stored inside the encrypted payload.
TS-003R1Random-key encryptionDone256-bit keys from crypto.getRandomValues; fresh salt and nonce per package.
TS-004R1Authenticated encryptionDoneAES-256-GCM, header bound as associated data, plus HKDF key commitment. Not independently reviewed.
TS-005R1Recovery key presentationDoneCopy, download key file, and a retention confirmation before the package download unlocks.
TS-006R1Decrypt locallyDoneWrong key or tampering yields one generic failure and no files.
TS-007R1Per-file integrity verificationDoneOrder, count and lengths bound by the authenticated manifest; per-file SHA-256 for files up to 64 MiB.
TS-008R1Ciphertext exportDoneDocumented TSPK v1 format; offline decoder available.
TS-009R1Original files untouchedDoneFiles are only read. Cancel or error produces nothing.
TS-010R1Key/data separation guidanceDoneKey and package shown as separate objects with separate actions; nothing is sent automatically.
TS-011R1Memory-only defaultDoneNo keys, files or packages are stored. Only the theme choice uses localStorage.
TS-012R1Clear/reset sessionDoneRevokes object URLs and zero-fills key buffers we hold. Not forensic erasure.
TS-013R1Filename/path safetyDoneTraversal, control/bidi characters, reserved device names and case collisions handled.
TS-014R1Resource preflightDoneInput total, package size and rough peak-memory estimate before encrypting.
TS-015R1Progress/cancelDoneStage and chunk-aware progress. Cancel takes effect between steps/chunks; canceled output is discarded.
TS-016R1Package inspectionDone/inspect-package shows the public header byte-by-byte; manifest only after verification.
TS-017R1Recipient safe downloadDoneOutputs are application/octet-stream downloads; nothing is previewed or rendered.
TS-018R1Format/version compatibilityDoneUnknown versions, profiles, KDFs and reserved flags are rejected before work.
TS-019R2Passphrase modeDonePBKDF2-HMAC-SHA256, 600,000 iterations default, bounded 100k–5M on decode. Argon2 not used (no vetted self-hosted WASM shipped).
TS-020R2Batch recipient packagesDoneUp to 10 independent packages and keys in one go.
TS-021R2Optional compressionDonedeflate-raw before encryption, whole profile only, bounded on decode.
TS-022R2Chunked large-package profilePartialSTREAM-style nonces with reorder/drop/duplicate/truncation tests. Not audited; output still buffered in memory (512 MiB cap).
TS-023R2Native streaming saveNot donePackages are built as in-memory Blobs; limits shown in preflight.
TS-024R2Web Share handoffDoneShown only where the browser supports sharing files. Sharing does not prove delivery.
TS-025R2Verification receipt fileDonePlain-text local receipt with explicit limits.
TS-026R2Metadata/privacy inspectorDoneEncrypt screen lists exposed vs encrypted fields; inspector shows header bytes.
TS-027R3Manual-signalled WebRTC transferPartialExperimental. Copy/paste offer and answer, no STUN/TURN by default. Same-network only in practice.
TS-028R3Peer verification codePartialCode derived from both DTLS fingerprints; users compare out of band. Experimental.
TS-029R3Data-channel backpressurePartialOrdered channel, bufferedAmount backpressure, encrypted package verified on arrival.
TS-030R3Qualified resumeNot doneInterrupted transfers must restart with a fresh session and key.
TS-031XGlobal download capsExcludedImpossible without a trusted server.
TS-032XGuaranteed expiry/revocationExcludedOnly an advisory date inside the package.
TS-033XBackground hosted linkExcludedWould need hosted storage; not part of this product.
TS-034XMalware-free guaranteeExcludedEncryption and checksums say nothing about whether a file is safe.
TS-101R2Offline decoder distributionDoneSingle-file HTML with published SHA-256 and a no-network CSP.
TS-102R2Key confirmation exerciseDonePaste a saved key to check it against the package commitment, locally.
TS-103R2Package name privacy modeDoneOpaque package filename by default; internal names encrypted.
TS-104R2Manifest comparisonDoneMissing, extra or duplicate members block success.
TS-105R2Recipient extraction selectionDoneSelect files after full-package verification.
TS-106R2Safe file-type handlingDoneExtension-based warnings for active content; not a scan.
TS-107R2Key rotation by repackagingDoneRe-encrypt decrypted files with a new key; old copies stay readable with the old key.
TS-108R2Password-strength guidanceDoneRough estimate plus offline-guessing explanation; random passphrase generator.
TS-109R2Container migrationNot doneOnly TSPK v1 exists, so there is nothing to migrate yet.
TS-110R3Transfer speed and ETAPartialBytes sent and rate shown; ETA not shown.
TS-111R3Receiver storage preflightDoneReceiver sees advertised size and must approve; hard cap enforced.
TS-112R3Simultaneous transfer queueNot doneOne transfer per session.
TS-113R3Sender receipt limitationsDoneAcknowledgement worded as "the other browser reported success".
TS-114R3Advisory expiry displayDoneOptional date inside the encrypted manifest, displayed as a request.
TS-115R3Security profile reportDoneOn /security, including "not independently audited".