{"id":1016,"library":"pybase64","title":"pybase64","description":"pybase64 is a Python library that provides a fast Base64 encoding/decoding implementation by wrapping the highly optimized `libbase64` C library. It maintains an active development status with regular updates to support new Python versions and performance enhancements. The current version is 1.4.3, and new releases often coincide with Python's release cycle.","status":"active","version":"1.4.3","language":"python","source_language":"en","source_url":"https://github.com/mayeut/pybase64","tags":["base64","encoding","decoding","performance","binary"],"install":[{"cmd":"pip install pybase64","lang":"bash","label":"Install latest version"}],"dependencies":[],"imports":[{"symbol":"pybase64","correct":"import pybase64"},{"symbol":"b64encode","correct":"pybase64.b64encode"},{"symbol":"b64decode","correct":"pybase64.b64decode"},{"symbol":"standard_b64encode","correct":"pybase64.standard_b64encode"},{"symbol":"urlsafe_b64encode","correct":"pybase64.urlsafe_b64encode"}],"quickstart":{"code":"import pybase64\n\noriginal_data = b'Hello, world! This is a test string for pybase64.'\n\n# Standard Base64 encoding\nencoded_standard = pybase64.standard_b64encode(original_data)\nprint(f\"Standard Encoded: {encoded_standard}\")\n\n# Standard Base64 decoding\ndecoded_standard = pybase64.standard_b64decode(encoded_standard)\nprint(f\"Standard Decoded: {decoded_standard}\\n\")\n\n# URL-safe Base64 encoding\nencoded_urlsafe = pybase64.urlsafe_b64encode(original_data)\nprint(f\"URL-safe Encoded: {encoded_urlsafe}\")\n\n# URL-safe Base64 decoding with validation for best performance\ndecoded_urlsafe = pybase64.urlsafe_b64decode(encoded_urlsafe, validate=True)\nprint(f\"URL-safe Decoded: {decoded_urlsafe}\")\n\nassert original_data == decoded_standard\nassert original_data == decoded_urlsafe\n","lang":"python","description":"This quickstart demonstrates basic Base64 encoding and decoding using `pybase64`. It shows both standard and URL-safe operations. For optimal decoding performance, especially with trusted input, using `validate=True` with `b64decode` is recommended."},"warnings":[{"fix":"Upgrade to Python 3.8 or newer, or pin pybase64 version to <1.4.0.","message":"pybase64 dropped support for Python 3.6 and 3.7 with the release of version 1.4.0. Users on these Python versions must either upgrade their Python environment or remain on pybase64 versions prior to 1.4.0.","severity":"breaking","affected_versions":"<1.4.0 (for old Python versions)"},{"fix":"Call `pybase64.b64decode(encoded_bytes, validate=True)`","message":"For the fastest decoding, especially with trusted input, it is recommended to use the `b64decode` function with the `validate=True` argument. This avoids character validation overhead.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Upgrade to pybase64 version 1.3.2 or later.","message":"Prior to version 1.3.2, `pybase64` might have produced incorrect outcomes when decoding non C-contiguous buffers, particularly in PyPy environments. This was fixed in v1.3.2.","severity":"gotcha","affected_versions":"<1.3.2"},{"fix":"Upgrade to pybase64 version 1.4.2 or later.","message":"A deprecation warning related to `argparse.FileType` usage was fixed in version 1.4.2. If you use `pybase64` within command-line tools that rely on `argparse.FileType`, older versions might emit warnings.","severity":"deprecated","affected_versions":"<1.4.2"},{"fix":"Convert `bytes` manually using `.decode('ascii')` or `.encode('ascii')`, or use `b64encode_as_string` / `b64decode_as_bytearray` for specific return types.","message":"Unlike some legacy `base64` module functions, `pybase64`'s core `b64encode` and `b64decode` functions primarily work with and return `bytes` objects. If string or bytearray output is required, use `b64encode_as_string` (returns `str`) or `b64decode_as_bytearray` (returns `bytearray`) introduced in v1.1.0.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Remove the `validate` argument when calling `pybase64.urlsafe_b64decode`.","message":"`pybase64.urlsafe_b64decode` does not support the `validate` keyword argument. This argument is specific to `pybase64.b64decode` for optimizing performance by skipping character validation.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-05-12T22:39:04.006Z","next_check":"2026-06-27T00:00:00.000Z","problems":[{"fix":"Install the library using pip: `pip install pybase64`","cause":"The `pybase64` library has not been installed in your Python environment or is not accessible within your current Python path.","error":"ModuleNotFoundError: No module named 'pybase64'"},{"fix":"Ensure the Base64 string is correctly padded (its length must be a multiple of 4, often by adding '=' characters at the end) and free of non-Base64 characters. You might need to add padding manually if it's missing: `s += '=' * (-len(s) % 4)` before decoding.","cause":"This error occurs during Base64 decoding when the input string's length is not a multiple of 4, or it contains invalid characters, indicating that the data is corrupted, incomplete, or not properly padded.","error":"binascii.Error: Incorrect padding"},{"fix":"Do not attempt to decode the result of `pybase64.b64decode()` into a string unless you are certain of its original text encoding. If the original data was indeed a string with a specific encoding (e.g., 'latin-1' or 'cp1252'), use that encoding for decoding: `decoded_bytes.decode('latin-1')`. If the data is truly binary, keep it as `bytes`.","cause":"This error typically happens when you try to decode the `bytes` output of `pybase64.b64decode()` into a `str` using an incorrect text encoding (e.g., 'utf-8') for the original data. Base64 encoding operates on binary data, and its decoded output is also binary (`bytes`), not necessarily a UTF-8 string.","error":"UnicodeDecodeError: 'utf-8' codec can't decode byte 0x__ in position __: invalid start byte"},{"fix":"To install the `pybase64` library, use the correct package name: `pip install pybase64`","cause":"Users often encounter this when attempting to install the `pybase64` library by incorrectly typing `pip install base64`. The `base64` module is part of Python's standard library and does not need to be installed via pip, hence no package named 'base64' exists on PyPI.","error":"ERROR: Could not find a version that satisfies the requirement base64"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.4.3","cli_name":"","install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"18.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"18.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0,"mem_mb":0.5,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.7,"disk_size":"19.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":0.7,"disk_size":"19.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.01,"mem_mb":0.7,"disk_size":"20M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.7,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"11.7M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"11.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"12M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.7,"disk_size":"11.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.7,"disk_size":"11.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"17.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"17.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.9,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"18M"}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":null,"tag_description":null,"results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}