diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6594fac..6b5c1b8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# 1.3.6
+
+* Change the path used in error messages when reading from stdin from "<stdin>"
+  to "stdin". The former crashes on Windows since it is not a valid Windows
+  pathname. To get the old behavior, pass `--stdin-name=<stdin>`.  
+
 # 1.3.5
 
 * Restore command line output accidentally removed in 1.3.4.
diff --git a/lib/src/cli/options.dart b/lib/src/cli/options.dart
index 2b94c76..2c056c5 100644
--- a/lib/src/cli/options.dart
+++ b/lib/src/cli/options.dart
@@ -89,8 +89,7 @@
   parser.addOption(oldCli ? 'preserve' : 'selection',
       help: 'Selection to preserve formatted as "start:length".');
   parser.addOption('stdin-name',
-      help: 'The path name to show when an error occurs.',
-      defaultsTo: '<stdin>');
+      help: 'The path name to show when an error occurs.', defaultsTo: 'stdin');
 
   if (oldCli) {
     parser.addFlag('profile', negatable: false, hide: true);
diff --git a/test/command_line_test.dart b/test/command_line_test.dart
index 0b47668..a8d7629 100644
--- a/test/command_line_test.dart
+++ b/test/command_line_test.dart
@@ -49,9 +49,12 @@
         process.stdout, emits(startsWith('Formatting directory')));
 
     // Prints whether each file was changed.
-    await expectLater(process.stdout, emits('Formatted code/a.dart'));
-    await expectLater(process.stdout, emits('Unchanged code/b.dart'));
-    await expectLater(process.stdout, emits('Formatted code/c.dart'));
+    await expectLater(
+        process.stdout, emits('Formatted ${p.join('code', 'a.dart')}'));
+    await expectLater(
+        process.stdout, emits('Unchanged ${p.join('code', 'b.dart')}'));
+    await expectLater(
+        process.stdout, emits('Formatted ${p.join('code', 'c.dart')}'));
     await process.shouldExit(0);
 
     // Overwrites the files.
@@ -219,7 +222,7 @@
       await process.stdin.close();
 
       var json = jsonEncode({
-        'path': '<stdin>',
+        'path': 'stdin',
         'source': formattedSource,
         'selection': {'offset': 5, 'length': 9}
       });
@@ -356,14 +359,15 @@
     });
 
     test('allows specifying stdin path name', () async {
-      var process = await runFormatter(['--stdin-name=some/path.dart']);
+      var path = p.join('some', 'path.dart');
+      var process = await runFormatter(['--stdin-name=$path']);
       process.stdin.writeln('herp');
       await process.stdin.close();
 
       expect(await process.stderr.next,
           'Could not format because the source could not be parsed:');
       expect(await process.stderr.next, '');
-      expect(await process.stderr.next, contains('some/path.dart'));
+      expect(await process.stderr.next, contains(path));
       await process.stderr.cancel();
       await process.shouldExit(65);
     });
diff --git a/test/command_test.dart b/test/command_test.dart
index 20a1928..f18f3c2 100644
--- a/test/command_test.dart
+++ b/test/command_test.dart
@@ -21,8 +21,8 @@
     ]).create();
 
     var process = await runCommandOnDir();
-    expect(await process.stdout.next, 'Formatted code/a.dart');
-    expect(await process.stdout.next, 'Formatted code/c.dart');
+    expect(await process.stdout.next, 'Formatted ${p.join('code', 'a.dart')}');
+    expect(await process.stdout.next, 'Formatted ${p.join('code', 'c.dart')}');
     expect(await process.stdout.next,
         startsWith(r'Formatted 3 files (2 changed)'));
     await process.shouldExit(0);
@@ -41,9 +41,11 @@
       d.file('c.dart', unformattedSource)
     ]).create();
 
-    var process = await runCommand(['code/subdir', 'code/c.dart']);
-    expect(await process.stdout.next, 'Formatted code/subdir/a.dart');
-    expect(await process.stdout.next, 'Formatted code/c.dart');
+    var process =
+        await runCommand([p.join('code', 'subdir'), p.join('code', 'c.dart')]);
+    expect(await process.stdout.next,
+        'Formatted ${p.join('code', 'subdir', 'a.dart')}');
+    expect(await process.stdout.next, 'Formatted ${p.join('code', 'c.dart')}');
     expect(await process.stdout.next,
         startsWith(r'Formatted 2 files (2 changed)'));
     await process.shouldExit(0);
@@ -79,9 +81,12 @@
       ]).create();
 
       var process = await runCommandOnDir(['--show=all']);
-      expect(await process.stdout.next, 'Formatted code/a.dart');
-      expect(await process.stdout.next, 'Unchanged code/b.dart');
-      expect(await process.stdout.next, 'Formatted code/c.dart');
+      expect(
+          await process.stdout.next, 'Formatted ${p.join('code', 'a.dart')}');
+      expect(
+          await process.stdout.next, 'Unchanged ${p.join('code', 'b.dart')}');
+      expect(
+          await process.stdout.next, 'Formatted ${p.join('code', 'c.dart')}');
       expect(await process.stdout.next,
           startsWith(r'Formatted 3 files (2 changed)'));
       await process.shouldExit(0);
@@ -108,8 +113,10 @@
       ]).create();
 
       var process = await runCommandOnDir(['--show=changed']);
-      expect(await process.stdout.next, 'Formatted code/a.dart');
-      expect(await process.stdout.next, 'Formatted code/c.dart');
+      expect(
+          await process.stdout.next, 'Formatted ${p.join('code', 'a.dart')}');
+      expect(
+          await process.stdout.next, 'Formatted ${p.join('code', 'c.dart')}');
       expect(await process.stdout.next,
           startsWith(r'Formatted 3 files (2 changed)'));
       await process.shouldExit(0);
@@ -142,9 +149,11 @@
         ]).create();
 
         var process = await runCommandOnDir(['--output=show', '--show=all']);
-        expect(await process.stdout.next, 'Changed code/a.dart');
+        expect(
+            await process.stdout.next, 'Changed ${p.join('code', 'a.dart')}');
         expect(await process.stdout.next, formattedOutput);
-        expect(await process.stdout.next, 'Unchanged code/b.dart');
+        expect(
+            await process.stdout.next, 'Unchanged ${p.join('code', 'b.dart')}');
         expect(await process.stdout.next, formattedOutput);
         expect(await process.stdout.next,
             startsWith(r'Formatted 2 files (1 changed)'));
@@ -162,7 +171,8 @@
 
         var process =
             await runCommandOnDir(['--output=show', '--show=changed']);
-        expect(await process.stdout.next, 'Changed code/a.dart');
+        expect(
+            await process.stdout.next, 'Changed ${p.join('code', 'a.dart')}');
         expect(await process.stdout.next, formattedOutput);
         expect(await process.stdout.next,
             startsWith(r'Formatted 2 files (1 changed)'));
@@ -214,8 +224,10 @@
         ]).create();
 
         var process = await runCommandOnDir(['--output=none', '--show=all']);
-        expect(await process.stdout.next, 'Changed code/a.dart');
-        expect(await process.stdout.next, 'Unchanged code/b.dart');
+        expect(
+            await process.stdout.next, 'Changed ${p.join('code', 'a.dart')}');
+        expect(
+            await process.stdout.next, 'Unchanged ${p.join('code', 'b.dart')}');
         expect(await process.stdout.next,
             startsWith(r'Formatted 2 files (1 changed)'));
         await process.shouldExit(0);
@@ -232,7 +244,8 @@
 
         var process =
             await runCommandOnDir(['--output=none', '--show=changed']);
-        expect(await process.stdout.next, 'Changed code/a.dart');
+        expect(
+            await process.stdout.next, 'Changed ${p.join('code', 'a.dart')}');
         expect(await process.stdout.next,
             startsWith(r'Formatted 2 files (1 changed)'));
         await process.shouldExit(0);
@@ -251,7 +264,8 @@
       ]).create();
 
       var process = await runCommandOnDir(['--summary=line']);
-      expect(await process.stdout.next, 'Formatted code/a.dart');
+      expect(
+          await process.stdout.next, 'Formatted ${p.join('code', 'a.dart')}');
       expect(await process.stdout.next,
           matches(r'Formatted 2 files \(1 changed\) in \d+\.\d+ seconds.'));
       await process.shouldExit(0);
@@ -402,7 +416,7 @@
       await process.stdin.close();
 
       var json = jsonEncode({
-        'path': '<stdin>',
+        'path': 'stdin',
         'source': formattedSource,
         'selection': {'offset': 5, 'length': 9}
       });
@@ -443,14 +457,15 @@
     });
 
     test('allows specifying stdin path name', () async {
-      var process = await runCommand(['--stdin-name=some/path.dart']);
+      var path = p.join('some', 'path.dart');
+      var process = await runCommand(['--stdin-name=$path']);
       process.stdin.writeln('herp');
       await process.stdin.close();
 
       expect(await process.stderr.next,
           'Could not format because the source could not be parsed:');
       expect(await process.stderr.next, '');
-      expect(await process.stderr.next, contains('some/path.dart'));
+      expect(await process.stderr.next, contains(path));
       await process.stderr.cancel();
       await process.shouldExit(65);
     });
