{
  "date": "2026-10-31",
  "method": "Actual Node.js execution of browser export core; UTF-8 Blob bytes compared exactly. Six same-byte round trips and four deliberately modified files. Not an audio or speech-recognition benchmark.",
  "results": [
    {
      "name": "Plain text",
      "text": "Keep the final sentence.",
      "expected": "match",
      "result": {
        "equal": true,
        "expectedBytes": 24,
        "actualBytes": 24,
        "firstDifference": -1
      },
      "sha256": "80358ad839e73f8aaabb84d69ae20fdaaeee8fe4320a63d4484a5cbd2b3174a2"
    },
    {
      "name": "Curved quotation marks",
      "text": "“Don’t drop ‘not’.”",
      "expected": "match",
      "result": {
        "equal": true,
        "expectedBytes": 29,
        "actualBytes": 29,
        "firstDifference": -1
      },
      "sha256": "557f86cfbe65d97e547ca4388fe4de4bff0420734e4b123d9aff981702aa9317"
    },
    {
      "name": "Accents and emoji",
      "text": "café — naïve 🚀",
      "expected": "match",
      "result": {
        "equal": true,
        "expectedBytes": 21,
        "actualBytes": 21,
        "firstDifference": -1
      },
      "sha256": "9b127f327702b58f93203106183280a7d18600d4a71dabd2bac2a28ab1b02a99"
    },
    {
      "name": "Blank lines",
      "text": "First line.\n\nLast line.",
      "expected": "match",
      "result": {
        "equal": true,
        "expectedBytes": 23,
        "actualBytes": 23,
        "firstDifference": -1
      },
      "sha256": "c7b0dce67369178aeb51dd7c723aa38afbbe0360973db258045f85386db65f5b"
    },
    {
      "name": "A tab inside a line",
      "text": "Speaker\tWords",
      "expected": "match",
      "result": {
        "equal": true,
        "expectedBytes": 13,
        "actualBytes": 13,
        "firstDifference": -1
      },
      "sha256": "981af01390d31e484187ef9d98d476f69bc7a6c817a649253ccfb2af78b08e11"
    },
    {
      "name": "Leading and trailing spaces",
      "text": "  Keep these spaces.  ",
      "expected": "match",
      "result": {
        "equal": true,
        "expectedBytes": 22,
        "actualBytes": 22,
        "firstDifference": -1
      },
      "sha256": "858f4ae3ddad5e00c685e444cb6b860d4724095a1d3782c4f51650f969a37e86"
    },
    {
      "name": "UTF-8 BOM added",
      "text": "“Keep this line.”\nKeep this one too.  ",
      "expected": "mismatch",
      "result": {
        "equal": false,
        "expectedBytes": 42,
        "actualBytes": 45,
        "firstDifference": 0
      },
      "sha256": "052b0a38426523d5539c64a87dbc8a922ca44718afb1e8948b62dbdfc7737ce7"
    },
    {
      "name": "LF changed to CRLF",
      "text": "“Keep this line.”\nKeep this one too.  ",
      "expected": "mismatch",
      "result": {
        "equal": false,
        "expectedBytes": 42,
        "actualBytes": 43,
        "firstDifference": 21
      },
      "sha256": "052b0a38426523d5539c64a87dbc8a922ca44718afb1e8948b62dbdfc7737ce7"
    },
    {
      "name": "Trailing spaces removed",
      "text": "“Keep this line.”\nKeep this one too.  ",
      "expected": "mismatch",
      "result": {
        "equal": false,
        "expectedBytes": 42,
        "actualBytes": 40,
        "firstDifference": 40
      },
      "sha256": "052b0a38426523d5539c64a87dbc8a922ca44718afb1e8948b62dbdfc7737ce7"
    },
    {
      "name": "Curved quotes replaced",
      "text": "“Keep this line.”\nKeep this one too.  ",
      "expected": "mismatch",
      "result": {
        "equal": false,
        "expectedBytes": 42,
        "actualBytes": 38,
        "firstDifference": 0
      },
      "sha256": "052b0a38426523d5539c64a87dbc8a922ca44718afb1e8948b62dbdfc7737ce7"
    }
  ],
  "guards": [
    "empty/whitespace rejected",
    "over 1 MiB rejected"
  ],
  "sample": {
    "text": "“Don’t drop ‘not’.”\ncafé — naïve 🚀\nKeep this line.  ",
    "bytes": 69,
    "sha256": "594bd702a0577348327c1892d72ddaf10c71c230131c2a88e57fbbe9563db651"
  }
}