diff --git a/Tools/scripts/tabpolice.py b/Tools/scripts/tabpolice.py
new file mode 100755
index 0000000..9236b71
--- /dev/null
+++ b/Tools/scripts/tabpolice.py
@@ -0,0 +1,74 @@
+#! /usr/bin/env python
+
+"""The Tab Police watches for possibly inconsistent indentation."""
+
+import os
+import sys
+import getopt
+import string
+import tokenize
+
+verbose = 0
+
+def main():
+	global verbose
+	try:
+		opts, args = getopt.getopt(sys.argv[1:], "v")
+	except getopt.error, msg:
+		print msg
+	for o, a in opts:
+		if o == '-v':
+			verbose = verbose + 1
+	for arg in args:
+		check(arg)
+
+def check(file):
+	if os.path.isdir(file) and not os.path.islink(file):
+		if verbose:
+			print "%s: listing directory" % `file`
+		names = os.listdir(file)
+		for name in names:
+			fullname = os.path.join(file, name)
+			if (os.path.isdir(fullname) and
+			    not os.path.islink(fullname) or
+			    os.path.normcase(name[-3:]) == ".py"):
+				check(fullname)
+		return
+
+	try:
+		f = open(file)
+	except IOError, msg:
+		print "%s: I/O Error: %s" % (`file`, str(msg))
+		return
+
+	if verbose > 1:
+		print "checking", `file`, "with tabsize 8..."
+	tokens = []
+	tokenize.tabsize = 8
+	try:
+		tokenize.tokenize(f.readline, tokens.append)
+	except tokenize.TokenError, msg:
+		print "%s: Token Error: %s" % (`file`, str(msg))
+
+	if verbose > 1:
+		print "checking", `file`, "with tabsize 4..."
+	f.seek(0)
+	alttokens = []
+	tokenize.tabsize = 4
+	try:
+		tokenize.tokenize(f.readline, alttokens.append)
+	except tokenize.TokenError, msg:
+		print "%s: Token Error: %s" % (`file`, str(msg))
+	f.close()
+
+	if tokens != alttokens:
+		if verbose:
+			print "%s: *** Trouble in tab city! ***" % `file`
+		else:
+			print file
+	else:
+		if verbose:
+			print "%s: Clean bill of health." % `file`
+
+if __name__ == '__main__':
+	main()
