Skip to main content
CaseSwitch

How we test CaseSwitch

How CaseSwitch checks browser tools: canvas image conversion, Web Crypto randomness, the 15 MB file cap, and the 1,000,000 character text clip.

CaseSwitch is a set of pages and the JavaScript that runs inside them. A paste is not queued on a server for conversion. This page is the record of what that means in the current build, including the limits we would rather publish than imply.

What “in the browser” covers

The site is a static export. The first visit downloads the page. After that, text transforms, encoders, and canvas image work do not send the payload to CaseSwitch for processing. Ads, if they load, and the first download itself still use the network. A homepage draft may sit in local storage on that device. That store is not an account and it is not synced.

Random values

Password, UUID, and draw tools call crypto.getRandomValues() when the browser provides it. They do not use Math.random() for those values. The password generator does not upload the string and does not keep a copy. A long random password is still only as safe as the place you store it. This site is not a password manager and does not autofill accounts.

Images

PNG, JPG, WebP, and SVG conversions draw into a canvas and call toBlob. JPEG output fills the canvas first, because JPEG has no alpha channel. The WebP-to-JPG and PNG-to-JPG tools do that fill. PNG-to-WebP does not prefill, so transparency can remain when the browser’s WebP encoder keeps the alpha plane. Quality defaults to 0.92 and is clamped between 0.1 and 1. Raster files over 15 MB are rejected. SVG files over 5 MB are rejected, and the SVG path checks for scripts and event handlers before drawing. The canvas writes a new image. Camera metadata such as GPS is not copied across, because the new file is pixels, not a tagged copy of the original. Animation is out of scope: a still canvas keeps one frame.

Text length

Text tools clip input at 1,000,000 characters and return an error telling you to shorten the paste. The cap is there so a tab stays responsive. It is not a claim that a million-character string is a good idea. Digits and punctuation are left alone by the case converters unless a specific tool says otherwise.

Checks in the repository

Processor behavior is covered by Vitest, including URL encoding and the length clip. Image paths are configured in one table: output type, file cap, and whether a background fill is required. When a guide says encodeURIComponent, the default URL encoder uses that function. When a guide says ROT13 leaves digits alone, the cipher shifts only English letters. We do not describe a standing three-browser lab, a penetration test, or a style-manual certification. Title case on this site is a practical web default. It is not APA, MLA, or Chicago.

Case, Unicode, and encoders

Case tools change letters. They do not rewrite meaning, and they do not apply a publisher’s small-word list unless the tool page says it implements one. The title-case tool on this site is a web default, not a substitute for the APA, MLA, or Chicago manuals. Unicode styling maps Latin letters to other code points. A screen reader may not speak them as the word you typed, and a plain-text field may show boxes. URL encoding defaults to encodeURIComponent, which is for a query value, not a promise that the whole URL was signed. Base64 on this site is the standard alphabet. It is reversible encoding, not encryption, and it is not the URL-safe variant unless the tool page says so. JSON stringify parses JSON and prints it again with an indent. It does not escape an arbitrary paragraph into a string literal.

What we label as a toy

ROT13, Caesar, and A1Z26 are reversible letter games. Morse on this site is text in and text out. It does not play a tone and it is not a radio procedure. Unicode bold, italic, strikethrough, and upside-down text are other characters, not a font file you install. MD5 on this site is a checksum, not a way to store a password. Random IP addresses are dotted IPv4 fixtures, not a scanner and not IPv6.

Dates and corrections

Each tool carries a lastReviewed date. The page shows that date once, under the byline. A behavior change should update the guide and the date together. If a sentence on a tool page disagrees with the processor, the processor wins and the sentence should be corrected. Use the contact page or Suggest a Tool. Include the tool URL and a sample that is safe to share.

What this page is not

It is not a promise that every edge case has been tried, and it is not a ranking claim. It is the list of limits we can point at in the code that ships with the site. The image trade-offs are written out in the WebP, JPG, and PNG guide. The editorial policy covers how guides are written and updated.

WebP, JPG, and PNG: which file to keep · Editorial policy · Contact