diff --git a/io_scene_fbx/parse_fbx.py b/io_scene_fbx/parse_fbx.py
index 922bc4e49cc9f28177485abc6fa780a80187b3a8..f099cb0e3d69ff0570e56e9a6e1ea9ac1590a69a 100644
--- a/io_scene_fbx/parse_fbx.py
+++ b/io_scene_fbx/parse_fbx.py
@@ -24,6 +24,7 @@
 __all__ = (
     "parse",
     "data_types",
+    "parse_version",
     "FBXElem",
     )
 
@@ -37,6 +38,7 @@ import zlib
 _BLOCK_SENTINEL_LENGTH = 13
 _BLOCK_SENTINEL_DATA = (b'\0' * _BLOCK_SENTINEL_LENGTH)
 _IS_BIG_ENDIAN = (__import__("sys").byteorder != 'little')
+_HEAD_MAGIC = b'Kaydara FBX Binary\x20\x20\x00\x1a\x00'
 from collections import namedtuple
 FBXElem = namedtuple("FBXElem", ("id", "props", "props_type", "elems"))
 del namedtuple
@@ -129,18 +131,28 @@ def read_elem(read, tell, use_namedtuple):
     return FBXElem(*args) if use_namedtuple else args
 
 
-def parse(fn, use_namedtuple=True):
-    # import time
-    # t = time.time()
+def parse_version(fn):
+    """
+    Return the FBX version,
+    if the file isn't a binary FBX return zero.
+    """
+    with open(fn, 'rb') as f:
+        read = f.read
+
+        if read(len(_HEAD_MAGIC)) != _HEAD_MAGIC:
+            return 0
 
+        return read_uint(read)
+
+
+def parse(fn, use_namedtuple=True):
     root_elems = []
 
     with open(fn, 'rb') as f:
         read = f.read
         tell = f.tell
 
-        HEAD_MAGIC = b'Kaydara FBX Binary\x20\x20\x00\x1a\x00'
-        if read(len(HEAD_MAGIC)) != HEAD_MAGIC:
+        if read(len(_HEAD_MAGIC)) != _HEAD_MAGIC:
             raise IOError("Invalid header")
 
         fbx_version = read_uint(read)
@@ -151,8 +163,6 @@ def parse(fn, use_namedtuple=True):
                 break
             root_elems.append(elem)
 
-    # print("done in %.4f sec" % (time.time() - t))
-
     args = (b'', [], bytearray(0), root_elems)
     return FBXElem(*args) if use_namedtuple else args, fbx_version