Guides

Short, practical write-ups on the problems these tools solve.

Resize, compress, convert: three different jobs

Resizing, compressing and converting are three operations with three failure modes. The order to do them in, the quality settings that hold up, and the traps.

Keyword density: what the number can and cannot tell you

Google has said there is no ideal keyword density. How density is calculated, and how to use it to spot accidental repetition instead of chasing a target.

Markdown to PDF in the browser: image PDF vs text PDF, page size, margins and page breaks

Turn Markdown into a PDF or PNG you can share: image PDF or selectable-text PDF, A4 and Letter, margins, page breaks, long documents and Chinese fonts.

Merge PDFs without uploading them: what runs in the browser and what gets lost

Combine PDFs on your machine, check that nothing is sent, and know the real limits: encrypted files, lost bookmarks, metadata and signatures.

Base64 and UTF-8: why btoa fails on Chinese and what mojibake means

btoa throws on Chinese and emoji, atob returns garbage for UTF-8, and URL-safe or unpadded input breaks decoders. The byte-level reasons and the correct code.

Why your regex works in the tester but fails in your code

JavaScript, Python and PCRE are different regex dialects. The anchor, digit, group, flag and replacement rules that break when a pattern moves between them.

Markdown to HTML: raw HTML, safety, GFM differences and heading ids

What happens to raw HTML and javascript: links when Markdown becomes HTML, why List<String> disappears, and why heading ids and line breaks differ by renderer.

JWT decode vs verify: what a readable token does not prove

Anyone can read a JWT payload without a key. What a decoder shows, what verification adds, the alg pitfalls, and why exp and Chinese claims go wrong.

MD5, SHA-1 and SHA-256 checksums: why yours does not match

Newlines, encodings and line endings change a hash completely. Digest sizes, what is broken in MD5 and SHA-1, why none suit password storage, and hashing files.

Password entropy: how long is long enough, and what symbols really add

Entropy is length times log2 of the pool. Why an extra character often beats extra symbols, why Math.random is unfit, and what entropy cannot tell you.

QR code error correction and contrast: choosing L, M, Q or H and colours that scan

A QR code that scans on screen can fail on paper: error-correction levels, why contrast and polarity matter, and how to size the quiet zone.

Photo metadata: which EXIF fields actually give you away

A photo can carry GPS coordinates, the capture time, the camera model and a hidden thumbnail. How to strip those fields without re-encoding the image.

Why a text diff flags lines that look identical: line endings, whitespace and invisible characters

CRLF vs LF, trailing spaces, tabs, a missing final newline, BOMs and non-breaking spaces: the invisible differences behind a noisy diff, and how to find each.

Unix timestamp mistakes: units, timezones, and the 1970 bug

Seconds or milliseconds, UTC or local, offset or zone name: the recurring ways Unix timestamps break, each with the symptom that identifies it and the fix.

encodeURIComponent vs encodeURI, and where %2520 and "URI malformed" come from

Which JavaScript encoding fits a query value, a whole address or a form body, plus the causes of double encoding, "URI malformed" and garbled Chinese.

UTM parameters: naming conventions that keep reports clean

Why the same campaign shows up in three report rows, how internal UTMs overwrite real sources, and the naming rules and URL mistakes that cause both.

UUID v4 vs v7: which one to use, and what v7 gives away

Random v4 keys scatter inserts across a database index; time-ordered v7 keys fix that at a price. The bit layout, caveats and a rule for choosing.

Word count vs character count: which one to trust, and when

Why two tools give different counts for the same text: how spaces, emoji, Chinese and encodings change the number, and which limit uses which unit.

Title tag length: measure pixels, not characters

Search results truncate titles by rendered width, so no character count is safe. The number that actually matters, and how to check it before you publish.

Why your JSON is invalid: 7 rules that trip people up

JSON looks like JavaScript but is stricter. These are the seven syntax rules that cause almost every parsing error, and how to find the exact line that broke.