diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py
index fdd431d..9b22333 100644
--- a/Lib/test/test_string.py
+++ b/Lib/test/test_string.py
@@ -106,8 +106,19 @@
         self.assertEqual(string.capwords('ABC-DEF-GHI', '-'), 'Abc-Def-Ghi')
         self.assertEqual(string.capwords('ABC-def DEF-ghi GHI'), 'Abc-def Def-ghi Ghi')
 
+class BytesAliasTest(unittest.TestCase):
+
+    def test_builtin(self):
+        self.assert_(str is bytes)
+
+    def test_syntax(self):
+        self.assertEqual(b"spam", "spam")
+        self.assertEqual(br"egg\foo", "egg\\foo")
+        self.assert_(type(b""), str)
+        self.assert_(type(br""), str)
+
 def test_main():
-    test_support.run_unittest(StringTest, ModuleTest)
+    test_support.run_unittest(StringTest, ModuleTest, BytesAliasTest)
 
 if __name__ == "__main__":
     test_main()
diff --git a/Lib/tokenize.py b/Lib/tokenize.py
index 5a9d08c..9322e0f 100644
--- a/Lib/tokenize.py
+++ b/Lib/tokenize.py
@@ -109,21 +109,34 @@
             "uR'''": single3prog, 'uR"""': double3prog,
             "Ur'''": single3prog, 'Ur"""': double3prog,
             "UR'''": single3prog, 'UR"""': double3prog,
-            'r': None, 'R': None, 'u': None, 'U': None}
+            "b'''": single3prog, 'b"""': double3prog,
+            "br'''": single3prog, 'br"""': double3prog,
+            "B'''": single3prog, 'B"""': double3prog,
+            "bR'''": single3prog, 'bR"""': double3prog,
+            "Br'''": single3prog, 'Br"""': double3prog,
+            "BR'''": single3prog, 'BR"""': double3prog,
+            'r': None, 'R': None, 'u': None, 'U': None,
+            'b': None, 'B': None}
 
 triple_quoted = {}
 for t in ("'''", '"""',
           "r'''", 'r"""', "R'''", 'R"""',
           "u'''", 'u"""', "U'''", 'U"""',
           "ur'''", 'ur"""', "Ur'''", 'Ur"""',
-          "uR'''", 'uR"""', "UR'''", 'UR"""'):
+          "uR'''", 'uR"""', "UR'''", 'UR"""',
+          "b'''", 'b"""', "B'''", 'B"""',
+          "br'''", 'br"""', "Br'''", 'Br"""',
+          "bR'''", 'bR"""', "BR'''", 'BR"""'):
     triple_quoted[t] = t
 single_quoted = {}
 for t in ("'", '"',
           "r'", 'r"', "R'", 'R"',
           "u'", 'u"', "U'", 'U"',
           "ur'", 'ur"', "Ur'", 'Ur"',
-          "uR'", 'uR"', "UR'", 'UR"' ):
+          "uR'", 'uR"', "UR'", 'UR"',
+          "b'", 'b"', "B'", 'B"',
+          "br'", 'br"', "Br'", 'Br"',
+          "bR'", 'bR"', "BR'", 'BR"' ):
     single_quoted[t] = t
 
 tabsize = 8
diff --git a/Misc/NEWS b/Misc/NEWS
index 5060b68..cc74e16 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and builtins
 -----------------
 
+- Issue #1865: Bytes as an alias for str and b"" as an alias "" were
+  added.
+
 - sys.float_info / PyFloat_GetInfo: The floating point information
   object was converted from a dict to a specialized structseq object.
 
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index ee353aa..0015dae 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -1263,6 +1263,14 @@
 	if (isalpha(c) || c == '_') {
 		/* Process r"", u"" and ur"" */
 		switch (c) {
+		case 'b':
+		case 'B':
+			c = tok_nextc(tok);
+			if (c == 'r' || c == 'R')
+				c = tok_nextc(tok);
+			if (c == '"' || c == '\'')
+				goto letter_quote;
+			break;
 		case 'r':
 		case 'R':
 			c = tok_nextc(tok);
diff --git a/Python/ast.c b/Python/ast.c
index ddcd0a0..aa42fe8 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -3238,6 +3238,9 @@
                         quote = *++s;
                         unicode = 1;
                 }
+                if (quote == 'b' || quote == 'B') {
+                        quote = *++s;
+                }
                 if (quote == 'r' || quote == 'R') {
                         quote = *++s;
                         rawmode = 1;
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 3ebd29d..9a31356 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -2446,6 +2446,7 @@
 	SETBUILTIN("True",		Py_True);
 	SETBUILTIN("basestring",	&PyBaseString_Type);
 	SETBUILTIN("bool",		&PyBool_Type);
+	SETBUILTIN("bytes",		&PyString_Type);
 	SETBUILTIN("buffer",		&PyBuffer_Type);
 	SETBUILTIN("classmethod",	&PyClassMethod_Type);
 #ifndef WITHOUT_COMPLEX
