XOR Encryption Online processes large text in your browser, with the input and key data limited to 100,000 bytes.

The browser-based XOR Encryption Online applies a repeating-key XOR transform to UTF-8 bytes and shows the exact resulting bytes as lowercase hexadecimal and standard padded Base64. It can decrypt either representation, and the page does not upload the message, key, or output.

This tool is useful for reversible text transforms, education, interoperability checks, harmless puzzles, and capture-the-flag exercises. Repeating-key XOR is not secure encryption, however, so increasing the text size does not make it appropriate for confidential or integrity-sensitive information.

xor encryption online large text
XOR Encryption Online for Large Text: 100,000-Byte Limits

What the 100,000-byte limit means

The limit applies to UTF-8 bytes rather than visible characters. ASCII characters usually occupy one byte, while emoji and many non-Latin scripts can occupy several bytes each. A character count alone therefore cannot show whether a message will fit, especially when the text contains multilingual passages or emoji. The ceiling is intended to keep conversion, rendering, and copying responsive.

Both the plaintext input and the key are subject to the 100,000-byte limit. If either exceeds the ceiling, shorten the material or choose another documented workflow before processing it. Empty input and an empty key are also rejected.

Whitespace inside the plaintext is significant. Spaces, tabs, and line breaks become part of the UTF-8 message, while the key must also match exactly, including capitalization and spaces. Avoid trimming or reformatting either value before encryption unless you intend to change the resulting bytes.

Encrypt large text in the browser

Use the following workflow to transform a complete plaintext message:

  1. Choose Encrypt, then paste the plaintext into the input field. Preserve its whitespace exactly.
  2. Enter the repeating key as plain text. The key field does not interpret a sequence such as 6B6579 as hexadecimal.
  3. Run the local transform. The browser encodes the plaintext and key as UTF-8, combines corresponding bytes with XOR, and restarts the key when the plaintext is longer than the key.
  4. Review the lowercase hexadecimal and padded Base64 results. They contain the same XOR bytes, so choose the representation required by the receiving system.
  5. Copy the complete result and tell the recipient whether you selected hexadecimal or Base64. That format must match when the ciphertext is decoded.

The transformation remains in the browser, so the plaintext, key, and resulting output are not uploaded. For a long message, copy the entire selected output rather than only the portion visible on the screen.

Hex and Base64 outputs compared

Both output formats represent the same underlying byte sequence, but they have different transport and validation rules.

Representation Exact rules Practical fit
Hexadecimal Encryption writes two lowercase hexadecimal digits per byte. Decryption accepts only hexadecimal digits in complete byte pairs; whitespace is ignored. Convenient for inspecting individual bytes, although the text is longer than Base64.
Base64 Encryption uses the standard alphabet with correct padding. Decryption strictly requires standard Base64 characters and valid padding. More compact than hexadecimal and convenient to carry through ordinary text fields.

Switching the output format does not change the XOR ciphertext itself. Select the format that the recipient or system expects, and send only that representation. Whitespace inside encoded ciphertext is ignored for line wrapping, but the decoder does not perform other cleanup or guess how malformed data should be repaired.

Decrypt with the matching format and key

Recovering a message requires the same bytes, representation, and key used during encryption:

  1. Choose Decrypt mode.
  2. Select the same representation used for the ciphertext: hexadecimal or Base64.
  3. Paste the complete ciphertext. Line-wrapped whitespace is accepted, but malformed characters and invalid padding are not silently repaired.
  4. Enter the identical key text, preserving capitalization, spaces, and any other characters.
  5. Run the decryption. The selected representation is parsed strictly, the bytes are XORed with the repeating UTF-8 key, and the result must pass strict UTF-8 validation.

A wrong key commonly produces bytes that are not valid UTF-8, causing a visible error rather than silent replacement characters. That error is useful, but a successful decode is not proof that the key was correct because some incorrect byte sequences also form valid characters.

Keep the UTF-8 byte convention aligned

The implementation uses TextEncoder to produce UTF-8 bytes and JavaScript's bitwise XOR operator to combine them. In formula terms, the result byte at position i equals the plaintext byte at i XOR the key byte at position i modulo the key length. The key begins again whenever the plaintext continues beyond it.

This exact convention explains why another program may produce different results. The key field on this page contains text, not hexadecimal. For example, the word key becomes the UTF-8 bytes 6B 65 79. Entering 6B6579 instead uses those six visible characters as the key. A tool that accepts hex keys or operates on UTF-16 code units follows a different convention and will not necessarily match.

The transform also works with bytes rather than user-perceived grapheme clusters. An emoji can consume several plaintext bytes and therefore several key positions. For reliable comparisons across tools, ensure that both sides use UTF-8 text and the same exact key text before comparing their hexadecimal or Base64 output.

Diagnose errors and mismatched output

Strict parsing separates malformed ciphertext from other failures. Hexadecimal input must contain complete byte pairs made only from hexadecimal digits. Base64 input must use the standard alphabet and correct padding. Ignoring whitespace is intentional, but the tool does not remove other invalid characters or guess a corrected value.

  • Compare the key character for character, including capitalization, spaces, and line breaks.
  • Confirm that transport did not rewrite Base64 padding or remove hexadecimal byte pairs.
  • Check the UTF-8 byte count when either the plaintext or key approaches 100,000 bytes.
  • Confirm meaningful plaintext through an independent channel rather than relying only on visible readability.

Some wrong keys still produce valid UTF-8, especially for short ASCII messages, because random bytes can accidentally form valid characters. If the decoded result is syntactically valid but meaningless, the key may still be wrong. Confirm the expected wording separately before treating the round trip as successful.

Use it only where reversible obfuscation is appropriate

Do not use repeating-key XOR to protect passwords, personal records, payment details, private keys, or information that requires confidentiality or integrity. The method has no checksum, authentication tag, salt, nonce, password stretching, or key-management system, and an attacker can alter the ciphertext without detection.

Repeating keys expose patterns, known plaintext can reveal key bytes, and short keys are especially weak. For sensitive large text, choose a reviewed authenticated-encryption system and a vetted application that handles keys safely. Within its documented byte limits, XOR Encryption Online remains useful for harmless reversible transformations and byte-level interoperability checks, provided both participants preserve the exact key and representation.

Related reading: Base58 Decode in Python: Raw Bytes and UTF-8.