diff --git a/AUTHORS b/AUTHORS
index 0ca697b..f5dc823 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -65,3 +65,4 @@
 Alex Li <google@alexv525.com>
 Rahul Raj <64.rahulraj@gmail.com>
 Daniel Roek <daniel.roek@gmail.com>
+TheOneWithTheBraid <the-one@with-the-braid.cf>
diff --git a/packages/url_launcher/url_launcher_web/AUTHORS b/packages/url_launcher/url_launcher_web/AUTHORS
index 493a0b4..2678aab 100644
--- a/packages/url_launcher/url_launcher_web/AUTHORS
+++ b/packages/url_launcher/url_launcher_web/AUTHORS
@@ -64,3 +64,4 @@
 Anton Borries <mail@antonborri.es>
 Alex Li <google@alexv525.com>
 Rahul Raj <64.rahulraj@gmail.com>
+TheOneWithTheBraid <the-one@with-the-braid.cf>
\ No newline at end of file
diff --git a/packages/url_launcher/url_launcher_web/CHANGELOG.md b/packages/url_launcher/url_launcher_web/CHANGELOG.md
index 7ac1402..a434b7a 100644
--- a/packages/url_launcher/url_launcher_web/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.0.9
+
+- Fixes invalid routes when opening a `Link` in a new tab
+
 ## 2.0.8
 
 * Updates the minimum Flutter version to 2.10, which is required by the change
@@ -17,7 +21,7 @@
 
 ## 2.0.4
 
-* Add `implements` to pubspec.
+- Add `implements` to pubspec.
 
 ## 2.0.3
 
diff --git a/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart b/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
index 3e2a025..3b75e05 100644
--- a/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
+++ b/packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart
@@ -7,6 +7,7 @@
 
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
+import 'package:flutter_web_plugins/flutter_web_plugins.dart';
 import 'package:integration_test/integration_test.dart';
 import 'package:url_launcher_platform_interface/link.dart';
 import 'package:url_launcher_web/src/link.dart';
@@ -51,6 +52,25 @@
       // Check that the same anchor has been updated.
       expect(anchor.getAttribute('href'), uri2.toString());
       expect(anchor.getAttribute('target'), '_self');
+
+      final Uri uri3 = Uri.parse('/foobar');
+      await tester.pumpWidget(Directionality(
+        textDirection: TextDirection.ltr,
+        child: WebLinkDelegate(TestLinkInfo(
+          uri: uri3,
+          target: LinkTarget.self,
+          builder: (BuildContext context, FollowLink? followLink) {
+            return Container(width: 100, height: 100);
+          },
+        )),
+      ));
+      await tester.pumpAndSettle();
+
+      // Check that internal route properly prepares using the default
+      // [UrlStrategy]
+      expect(anchor.getAttribute('href'),
+          urlStrategy?.prepareExternalUrl(uri3.toString()));
+      expect(anchor.getAttribute('target'), '_self');
     });
 
     testWidgets('sizes itself correctly', (WidgetTester tester) async {
diff --git a/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.mocks.dart b/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.mocks.dart
index 24d694f..36903b0 100644
--- a/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.mocks.dart
+++ b/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.0.16 from annotations
+// Mocks generated by Mockito 5.0.17 from annotations
 // in regular_integration_tests/integration_test/url_launcher_web_test.dart.
 // Do not manually edit this file.
 
@@ -643,8 +643,6 @@
   bool dispatchEvent(_i2.Event? event) =>
       (super.noSuchMethod(Invocation.method(#dispatchEvent, [event]),
           returnValue: false) as bool);
-  @override
-  String toString() => super.toString();
 }
 
 /// A class which mocks [Navigator].
@@ -749,6 +747,4 @@
   _i3.Future<dynamic> share([Map<dynamic, dynamic>? data]) =>
       (super.noSuchMethod(Invocation.method(#share, [data]),
           returnValue: Future<dynamic>.value()) as _i3.Future<dynamic>);
-  @override
-  String toString() => super.toString();
 }
diff --git a/packages/url_launcher/url_launcher_web/lib/src/link.dart b/packages/url_launcher/url_launcher_web/lib/src/link.dart
index d3fa4a8..4498e74 100644
--- a/packages/url_launcher/url_launcher_web/lib/src/link.dart
+++ b/packages/url_launcher/url_launcher_web/lib/src/link.dart
@@ -11,7 +11,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/services.dart';
-
+import 'package:flutter_web_plugins/flutter_web_plugins.dart' show urlStrategy;
 import 'package:url_launcher_platform_interface/link.dart';
 
 /// The unique identifier for the view type to be used for link platform views.
@@ -163,6 +163,7 @@
   final BuildContext context;
 
   late html.Element _element;
+
   bool get _isInitialized => _element != null;
 
   Future<void> _initialize() async {
@@ -221,7 +222,13 @@
     if (uri == null) {
       _element.removeAttribute('href');
     } else {
-      _element.setAttribute('href', uri.toString());
+      String href = uri.toString();
+      // in case an internal uri is given, the url mus be properly encoded
+      // using the currently used [UrlStrategy]
+      if (!uri.hasScheme) {
+        href = urlStrategy?.prepareExternalUrl(href) ?? href;
+      }
+      _element.setAttribute('href', href);
     }
   }
 
diff --git a/packages/url_launcher/url_launcher_web/pubspec.yaml b/packages/url_launcher/url_launcher_web/pubspec.yaml
index 8860eeb..c45c062 100644
--- a/packages/url_launcher/url_launcher_web/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Web platform implementation of url_launcher
 repository: https://github.com/flutter/plugins/tree/main/packages/url_launcher/url_launcher_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
-version: 2.0.8
+version: 2.0.9
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
