diff --git a/BUILD.gn b/BUILD.gn
index 1b34f22..c7d4893 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -363,10 +363,6 @@
     defines = [ "U_COMMON_IMPLEMENTATION" ]
     deps = [ ":icudata" ]
 
-    if (is_chromeos) {
-      deps += [ ":icudata_hash" ]
-    }
-
     if (icu_use_data_file && icu_use_stub_data) {
       sources += [ "source/stubdata/stubdata.cpp" ]
     }
@@ -491,16 +487,6 @@
       }
     }
   }
-
-  if (is_chromeos) {
-    copy("icudata_hash") {
-      sources = [ "chromeos/icudtl.dat.hash" ]
-      outputs = [ "$root_out_dir/icudtl.dat.hash" ]
-      if (icu_copy_icudata_to_root_build_dir) {
-        data = [ "$root_out_dir/icudtl.dat.hash" ]
-      }
-    }
-  }
 } else {
   if (current_cpu == "wasm") {
     data_assembly = "$target_gen_dir/${data_bundle_prefix}_dat.cpp"
diff --git a/chromeos/icudtl.dat.hash b/chromeos/icudtl.dat.hash
deleted file mode 100644
index c1e5f5f..0000000
--- a/chromeos/icudtl.dat.hash
+++ /dev/null
Binary files differ
diff --git a/scripts/copy_data.sh b/scripts/copy_data.sh
index cc165d6..18adc25 100755
--- a/scripts/copy_data.sh
+++ b/scripts/copy_data.sh
@@ -51,40 +51,6 @@
   echo "Done with copying pre-built ICU data file for $1."
 }
 
-function copy_hash_data {
-  echo "Copying icudtl.dat.hash for $1"
-
-  rm -f "${TOPSRC}/$2/icudtl.dat.hash"
-  cp "data/out/tmp/icudt${VERSION}l.dat.hash" "${TOPSRC}/$2/icudtl.dat.hash"
-
-  echo "Done with copying icudtl.dat.hash for $1."
-}
-
-function align_data {
-  echo "Aligning files in icudtl.dat for $1"
-
-  local ORIGINAL="data/out/tmp/icudt${VERSION}l.dat"
-  local ALIGNED="data/out/tmp/icudt${VERSION}l-aligned.dat"
-
-  rm -f "${ALIGNED}"
-  "${TOPSRC}/scripts/icualign.py" "${ORIGINAL}" "${ALIGNED}"
-  mv "${ALIGNED}" "${ORIGINAL}"
-
-  echo "Done with aligning files in icudtl.dat for $1."
-}
-
-function hash_data {
-  echo "Hashing icudtl.dat for $1"
-
-  local DATA_FILE="data/out/tmp/icudt${VERSION}l.dat"
-  local HASH_FILE="data/out/tmp/icudt${VERSION}l.dat.hash"
-
-  rm -f "${HASH_FILE}"
-  "$TOPSRC/scripts/icuhash.py" "${DATA_FILE}" "${HASH_FILE}"
-
-  echo "Done with hashing icudtl.dat for $1."
-}
-
 
 BACKUP_DIR="dataout/$1"
 function backup_outdir {
@@ -95,10 +61,7 @@
 
 case "$1" in
   "chromeos")
-    align_data ChromeOS
-    hash_data ChromeOS
     copy_data ChromeOS $1
-    copy_hash_data ChromeOS $1
     backup_outdir $1
     ;;
   "common")
diff --git a/scripts/icualign.py b/scripts/icualign.py
deleted file mode 100755
index 7909555..0000000
--- a/scripts/icualign.py
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2022 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import itertools
-import struct
-import sys
-
-PAGE_SIZE = 0x1000  # System page size.
-THRESHOLD = 0x2000  # Minimum size of the file to be aligned.
-
-
-# Read 2 bytes.
-def read16(data, offset):
-    return struct.unpack_from("<H", data, offset)[0]
-
-
-# Read 4 bytes.
-def read32(data, offset):
-    return struct.unpack_from("<I", data, offset)[0]
-
-
-# Write 4 bytes.
-def write32(data, offset, value):
-    return struct.pack_into("<I", data, offset, value)
-
-
-################################################################################
-# (Adapted from `source/tools/toolutil/pkg_gencmn.cpp`)
-#
-# A .dat package file contains a simple Table of Contents of item names,
-# followed by the items themselves:
-#
-# 1. ToC table
-#
-# uint32_t count; - number of items
-# UDataOffsetTOCEntry entry[count]; - pair of uint32_t values per item:
-#     uint32_t nameOffset; - offset of the item name
-#     uint32_t dataOffset; - offset of the item data
-# both are byte offsets from the beginning of the data
-#
-# 2. item name strings
-#
-# All item names are stored as char * strings in one block between the ToC table
-# and the data items.
-#
-# 3. data items
-#
-# The data items are stored following the item names block.
-# The data items are stored in the sorted order of their names.
-################################################################################
-
-
-def pad_data(data):
-    out = bytearray()
-
-    header_size = read16(data, 0)           # Size of the ICU header.
-    item_count = read32(data, header_size)  # Number of files inside icudtl.dat
-    toc_offset = header_size + 4            # Offset of the Table of Contents.
-
-    # Copy everything until the beginning of the data.
-    out_offset = read32(data, toc_offset + 4) + header_size
-    out += data[:out_offset]
-
-    # Iterate over the files.
-    for i in range(item_count):
-        # Offset inside the ToC for this file.
-        offset = toc_offset + (i * 8)
-
-        # Offset of the name and data, relative to the beginning of the data section.
-        name_offset = read32(data, offset)
-        data_offset = read32(data, offset + 4)
-
-        # Offset of the name and the data, relative to the beginning of the file.
-        name_file_offset = name_offset + header_size
-        data_file_offset = data_offset + header_size
-
-        # Calculate the size of this file.
-        if i + 1 < item_count:
-            next_offset = toc_offset + ((i + 1) * 8)
-            next_data_offset = read32(data, next_offset + 4)
-            size = next_data_offset - data_offset
-        else:
-            size = len(data) - (data_offset + header_size)
-
-        # Insert padding to align files bigger than the threshold.
-        page_offset = out_offset & (PAGE_SIZE - 1)
-        if size >= THRESHOLD and page_offset != 0:
-            padding = PAGE_SIZE - page_offset
-            out.extend(itertools.repeat(0x00, padding))
-            out_offset += padding
-
-        # Put the new offset into the Table of Contents.
-        write32(out, offset + 4, out_offset - header_size)
-
-        # Copy the content of the file.
-        out += data[data_file_offset : data_file_offset + size]
-        out_offset += size
-
-    return out
-
-
-if __name__ == "__main__":
-    # Check arguments.
-    if len(sys.argv) != 3:
-        error_str = "icualign: wrong number of arguments\n\n"
-        help_str = "usage: icualign <infilename> <outfilename>\n\n"
-        sys.exit(error_str + help_str)
-
-    # Extract arguments.
-    in_filename = sys.argv[1]
-    out_filename = sys.argv[2]
-
-    # Read the input file.
-    with open(in_filename, "rb") as in_file:
-        data = in_file.read()
-        # Apply padding to the file to achieve the desired alignment.
-        out_data = pad_data(data)
-        # Write the output file.
-        with open(out_filename, "wb") as out_file:
-            out_file.write(out_data)
diff --git a/scripts/icuhash.py b/scripts/icuhash.py
deleted file mode 100755
index 4df7446..0000000
--- a/scripts/icuhash.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2022 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import hashlib
-import itertools
-import sys
-
-PAGE_SIZE = 0x1000  # System page size.
-HASH_SIZE = 8       # Size of the hash in bytes.
-
-
-def hash_pages(data):
-    out = bytearray()
-
-    offset = 0
-    while offset < len(data):
-        # Extract a page and pad it with zeroes in case it's not a full page.
-        # This is to emulate the behavior of mmap in Linux (and thus ChromeOS)
-        # environments.
-        #
-        #     "POSIX specifies that the system shall always zero fill any
-        #      partial page at the end of the object [...]".
-        #
-        # Reference: https://man7.org/linux/man-pages/man2/mmap.2.html
-        page = bytearray(data[offset : offset + PAGE_SIZE])
-        page.extend(itertools.repeat(0x00, PAGE_SIZE - len(page)))
-
-        # Calculate the hash of the page.
-        digest = hashlib.blake2b(page, digest_size=HASH_SIZE).digest()
-        out.extend(digest)
-
-        offset += PAGE_SIZE
-
-    return out
-
-
-if __name__ == "__main__":
-    # Check arguments.
-    if len(sys.argv) != 3:
-        error_str = "icuhash: wrong number of arguments\n\n"
-        help_str = "usage: icuhash <infilename> <outfilename>\n\n"
-        sys.exit(error_str + help_str)
-
-    # Extract arguments.
-    in_filename = sys.argv[1]
-    out_filename = sys.argv[2]
-
-    # Read the input file.
-    with open(in_filename, "rb") as in_file:
-        data = in_file.read()
-        # Calculate hashes for each page of the file.
-        out_data = hash_pages(data)
-        # Write the output file.
-        with open(out_filename, "wb") as out_file:
-            out_file.write(out_data)
