diff --git a/bin/loopy b/bin/loopy
index cb223c31a1eef3244bd21310722f4b84a539d77c..9d667ec2f1d31960f61256bf6067064db846be53 100644
--- a/bin/loopy
+++ b/bin/loopy
@@ -52,7 +52,7 @@ def main():
 
     parser.add_argument("infile")
     parser.add_argument("outfile")
-    parser.add_argument("--lang", default="loopy")
+    parser.add_argument("--lang")
     parser.add_argument("--target")
     parser.add_argument("--name")
     parser.add_argument("--transform")
@@ -65,13 +65,28 @@ def main():
         from warnings import warn
         warn("--target option is deprecated and ignored")
 
+    lang = None
     if args.infile == "-":
         infile_content = sys.stdin.read()
     else:
+        from os.path import splitext
+        _, ext = splitext(args.infile)
+
+        lang = {
+                ".loopy": "loopy",
+                ".floopy": "fortran",
+                }
         with open(args.infile, "r") as infile_fd:
             infile_content = infile_fd.read()
 
-    if args.lang == "loopy":
+    if args.lang is not None:
+        lang = args.lang
+
+    if lang is None:
+        raise RuntimeError("unable to deduce input language "
+                "(wrong input file extension? --lang flag?)")
+
+    if lang == "loopy":
         # {{{ path wrangling
 
         from os.path import dirname, abspath