diff --git a/tests/scripts/list_internal_identifiers.py b/tests/scripts/list_internal_identifiers.py
new file mode 100755
index 0000000..d58cb3f
--- /dev/null
+++ b/tests/scripts/list_internal_identifiers.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python3
+#
+# Copyright The Mbed TLS Contributors
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""
+This script generates a file called _identifiers that contains all Mbed TLS
+identifiers found on internal headers. This is the equivalent of what was
+previously `list-identifiers.sh --internal`, and is useful for generating an
+exclusion file list for ABI/API checking, since we do not promise compatibility
+for them.
+
+It uses the NameCeck class from check_names.py to perform the parsing.
+
+Returns 0 on success, 1 if there is a script error.
+Must be run from Mbed TLS root.
+"""
+
+import argparse
+import traceback
+import sys
+from check_names import NameCheck
+
+def main():
+    parser = argparse.ArgumentParser(
+        formatter_class=argparse.RawDescriptionHelpFormatter,
+        description=(
+            "This script writes a list of parsed identifiers in internal "
+            "headers to \"_identifiers\". This is useful for generating a list "
+            "of names to exclude from ABI checking. "))
+
+    parser.parse_args()
+
+    try:
+        name_check = NameCheck()
+        internal_headers = (
+            name_check.get_files("include/mbedtls/*_internal.h") +
+            name_check.get_files("library/*.h")
+        )
+
+        result = name_check.parse_identifiers(internal_headers)
+
+        identifiers = ["{}\n".format(match.name) for match in result]
+        with open("_identifiers", "w", encoding="utf-8") as f:
+            f.writelines(identifiers)
+
+    except Exception: # pylint: disable=broad-except
+        traceback.print_exc()
+        sys.exit(1)
+
+if __name__ == "__main__":
+    main()
