Base64URL in serverless handlers: incident playbook
TL;DR: Validate locally, fix the first real error, validate again (no upload).
Handle Base64URL in serverless handlers: incident playbook with a repeatable Base64URL workflow: normalize alphabet, fix padding, decode locally, and validate.
Base64URL quick map
| Rule | Base64 | Base64URL |
|---|---|---|
| Alphabet | +, / | -, _ |
| Padding | Often has = | Often omits = |
| Typical use | General binary transport | URLs, JWT segments |
Focus for this query
- Normalize alphabet ('-'/'_' vs '+'/'/').
- Add or remove '=' padding based on your target format.
- Validate with local tools before passing payload to your app.
Safe decode workflow
- Remove whitespace/newlines.
- Normalize alphabet:
-→+,_→/. - Add padding so length % 4 == 0.
- Decode locally and validate output shape (JSON/text/binary).
Runtime snippet (generic)
function base64urlToBase64(input) {
const s = String(input || '').replace(/\s+/g, '').replace(/-/g, '+').replace(/_/g, '/');
return s + '='.repeat((4 - (s.length % 4)) % 4);
}
const b64 = base64urlToBase64(token);
const bytes = Uint8Array.from(atob(b64), (c) => c.charCodeAt(0));
const text = new TextDecoder().decode(bytes);
console.log(text);
Frequent failures
- Invalid character from copy/paste noise or wrong alphabet.
- Missing padding when decoder expects canonical Base64.
- JSON parse after decode fails when payload is not JSON/text.
Privacy guardrail
Base64/Base64URL strings can still contain secrets. Decode locally, redact sensitive fields, and only then share snippets.
FAQ
Is anything uploaded to a server? No. All processing happens locally in your browser. Files are never uploaded.
What is the recommended workflow? Validate the input, fix the first real issue, validate again, then export/convert. This avoids compounding errors.
Related tools
Related guides
Privacy & Security
All processing happens locally in your browser. Files are never uploaded.
Related by intent
Closest pages and hubs to accelerate crawl discovery and first impressions.
First impression poolImpression seed hubIntent hub: runbooksTopic: base64urlRelated: winner compare node xml reference to entity must end with semicolon compatibility incident respoRelated: winner live 1 base64url vs base64 incident response securityRelated: winner compare ruby xml repeated elements arrays reliability incident responseRelated: winner compare node xml reference to entity must end with semicolon performance incident respons
First Impression Acceleration
Pages prioritized for first search impressions with fresh crawl/indexing signals.
neighbor csharp go json cannot unmarshal array into field neighbor php go json cannot unmarshal string into field paneighbor csharp go json cannot unmarshal string into fieldneighbor php go json cannot unmarshal string into field usneighbor python go json cannot unmarshal string into fieldneighbor php go json cannot unmarshal string into field paneighbor csharp go json cannot unmarshal array into field neighbor php go json cannot unmarshal string into field usneighbor csharp go json cannot unmarshal string into fieldneighbor php go json cannot unmarshal string into field usneighbor java go json cannot unmarshal string into field pneighbor php winner csharp csharp newtonsoft error convertneighbor csharp go json cannot unmarshal array into field neighbor php go json cannot unmarshal string into field toneighbor csharp go json cannot unmarshal array into field neighbor php go json cannot unmarshal array into field pay