diff --git a/README.md b/README.md
index 7374c46..dd1fe44 100644
--- a/README.md
+++ b/README.md
@@ -65,6 +65,17 @@ u"foo"      # 'foo'
 u'''foo'''  # '''foo'''
 ```
 
+### Long literals
+
+Availability:
+- If `pyupgrade` is running in python 2.
+
+```python
+5L                            # 5
+5l                            # 5
+123456789123456789123456789L  # 123456789123456789123456789
+```
+
 
 ## Planned features
 
diff --git a/pyupgrade.py b/pyupgrade.py
index 5da90af..60ffda7 100644
--- a/pyupgrade.py
+++ b/pyupgrade.py
@@ -463,6 +463,14 @@ def _fix_unicode_literals(contents_text, py3_only):
     return untokenize_tokens(tokens)
 
 
+def _fix_long_literals(contents_text):
+    tokens = tokenize_src(contents_text)
+    for i, token in enumerate(tokens):
+        if token.name == 'NUMBER':
+            tokens[i] = token._replace(src=token.src.rstrip('lL'))
+    return untokenize_tokens(tokens)
+
+
 def fix_file(filename, args):
     with open(filename, 'rb') as f:
         contents_bytes = f.read()
@@ -477,6 +485,7 @@ def fix_file(filename, args):
     contents_text = _fix_sets(contents_text)
     contents_text = _fix_format_literals(contents_text)
     contents_text = _fix_unicode_literals(contents_text, args.py3_only)
+    contents_text = _fix_long_literals(contents_text)
 
     if contents_text != contents_text_orig:
         print('Rewriting {}'.format(filename))

diff --git a/tests/pyupgrade_test.py b/tests/pyupgrade_test.py
index 868d7a4..b594486 100644
--- a/tests/pyupgrade_test.py
+++ b/tests/pyupgrade_test.py
@@ -3,11 +3,13 @@ from __future__ import absolute_import
 from __future__ import unicode_literals
 
 import io
+import sys
 
 import pytest
 
 from pyupgrade import _fix_dictcomps
 from pyupgrade import _fix_format_literals
+from pyupgrade import _fix_long_literals
 from pyupgrade import _fix_sets
 from pyupgrade import _fix_unicode_literals
 from pyupgrade import _imports_unicode_literals
@@ -318,6 +320,19 @@ def test_unicode_literals(s, py3_only, expected):
     assert ret == expected
 
 
+@pytest.mark.xfail(sys.version_info >= (3,), reason='python2 "feature"')
+@pytest.mark.parametrize(
+    ('s', 'expected'),
+    (
+        ('5L', '5'),
+        ('5l', '5'),
+        ('123456789123456789123456789L', '123456789123456789123456789'),
+    ),
+)
+def test_long_literals(s, expected):
+    assert _fix_long_literals(s) == expected
+
+
 def test_main_trivial():
     assert main(()) == 0
 

123L -> 123
Somewhere between python2.0 and python2.4 the L prefix became unnecessary for long literals
tests/pyupgrade_test.py::test_roundtrip_text[] tests/pyupgrade_test.py::test_roundtrip_text[foo] tests/pyupgrade_test.py::test_roundtrip_text[{}] tests/pyupgrade_test.py::test_roundtrip_text[{0}] tests/pyupgrade_test.py::test_roundtrip_text[{named}] tests/pyupgrade_test.py::test_roundtrip_text[{!r}] tests/pyupgrade_test.py::test_roundtrip_text[{:>5}] tests/pyupgrade_test.py::test_roundtrip_text[{{] tests/pyupgrade_test.py::test_roundtrip_text[}}] tests/pyupgrade_test.py::test_roundtrip_text[{0!s:15}] tests/pyupgrade_test.py::test_intentionally_not_round_trip[{:}-{}] tests/pyupgrade_test.py::test_intentionally_not_round_trip[{0:}-{0}] tests/pyupgrade_test.py::test_intentionally_not_round_trip[{0!r:}-{0!r}] tests/pyupgrade_test.py::test_tokenize_src_simple tests/pyupgrade_test.py::test_roundtrip_tokenize[testing/resources/empty.py] tests/pyupgrade_test.py::test_roundtrip_tokenize[testing/resources/unicode_snowman.py] tests/pyupgrade_test.py::test_roundtrip_tokenize[testing/resources/backslash_continuation.py] tests/pyupgrade_test.py::test_sets[set()-set()] tests/pyupgrade_test.py::test_sets[set((\n))-set((\n))] tests/pyupgrade_test.py::test_sets[set tests/pyupgrade_test.py::test_sets[set(())-set()] tests/pyupgrade_test.py::test_sets[set([])-set()] tests/pyupgrade_test.py::test_sets[set(( tests/pyupgrade_test.py::test_sets[set([1, tests/pyupgrade_test.py::test_sets[set([(1, tests/pyupgrade_test.py::test_sets[set([((1, tests/pyupgrade_test.py::test_dictcomps[x tests/pyupgrade_test.py::test_dictcomps[dict()-dict()] tests/pyupgrade_test.py::test_dictcomps[(-(] tests/pyupgrade_test.py::test_dictcomps[dict tests/pyupgrade_test.py::test_format_literals['{}'.format(1)-'{}'.format(1)] tests/pyupgrade_test.py::test_format_literals['{'.format(1)-'{'.format(1)] tests/pyupgrade_test.py::test_format_literals['}'.format(1)-'}'.format(1)] tests/pyupgrade_test.py::test_format_literals[x tests/pyupgrade_test.py::test_format_literals['{0}'.format(1)-'{}'.format(1)] tests/pyupgrade_test.py::test_format_literals['''{0}\n{1}\n'''.format(1, tests/pyupgrade_test.py::test_format_literals['{0}' tests/pyupgrade_test.py::test_format_literals[print(\n tests/pyupgrade_test.py::test_imports_unicode_literals[import tests/pyupgrade_test.py::test_imports_unicode_literals[from tests/pyupgrade_test.py::test_imports_unicode_literals[x tests/pyupgrade_test.py::test_imports_unicode_literals["""docstring"""\nfrom tests/pyupgrade_test.py::test_unicode_literals[(-False-(] tests/pyupgrade_test.py::test_unicode_literals[u''-False-u''] tests/pyupgrade_test.py::test_unicode_literals[u''-True-''] tests/pyupgrade_test.py::test_unicode_literals[from tests/pyupgrade_test.py::test_unicode_literals["""with tests/pyupgrade_test.py::test_main_trivial tests/pyupgrade_test.py::test_main_noop tests/pyupgrade_test.py::test_main_syntax_error tests/pyupgrade_test.py::test_main_non_utf8_bytes tests/pyupgrade_test.py::test_py3_only_argument_unicode_literals