```{index} single: decode_base64url; MIME::Base64 function ``` ```{index} single: MIME::Base64::decode_base64url; Perl function ``` # decode_base64url Decode a URL-safe base64 string, accepting input with or without trailing padding. ## Synopsis ```perl use MIME::Base64 qw(decode_base64url); my $bytes = decode_base64url($token); ``` ## What you get back The decoded byte string. `-` and `_` in the input are mapped back to `+` and `/` before decoding, and any missing trailing padding is reconstructed. The decoder inherits `decode_base64`'s tolerance: characters outside the alphabet are silently skipped, and decoding stops at the first padding group. ## Examples ```perl decode_base64url("QWxhZGRpbjpvcGVuIHNlc2FtZQ"); ## "Aladdin:open sesame" decode_base64url("-_8"); ## "\xFB\xFF" decode_base64url("QWxhZGRpbjpvcGVuIHNlc2FtZQ=="); # padding also OK ## "Aladdin:open sesame" ``` ## Edge cases - Empty input returns the empty string. - Input with stray `+` or `/` is accepted (those are valid under standard base64); the URL-safe decoder is a superset of the standard decoder for input characters. - Truncated input (length not a multiple of four, no padding) is padded internally and decoded; the last partial group follows the same "1 char → 0 bytes, 2 → 1, 3 → 2" rule as `decode_base64`. ## Differences from upstream Fully compatible with upstream `MIME::Base64` {{ upstream.MIME_Base64 }}. ## See also - `encode_base64url` — the inverse operation. - `decode_base64` — standard variant.