diff --git a/frontend/src/metabase/visualizations/visualizations/LinkViz/LinkViz.tsx b/frontend/src/metabase/visualizations/visualizations/LinkViz/LinkViz.tsx
index 624ab4f4d22543408f3d70dc8d6091d200a909a5..e397c88acc5aa300c243b2544973a1a0f83618f4 100644
--- a/frontend/src/metabase/visualizations/visualizations/LinkViz/LinkViz.tsx
+++ b/frontend/src/metabase/visualizations/visualizations/LinkViz/LinkViz.tsx
@@ -5,6 +5,7 @@ import _ from "underscore";
 import TippyPopover from "metabase/components/Popover/TippyPopover";
 import Search from "metabase/entities/search";
 import { useToggle } from "metabase/hooks/use-toggle";
+import { getUrlTarget } from "metabase/lib/dom";
 import { SearchResults } from "metabase/nav/components/search/SearchResults";
 import type {
   LinkCardSettings,
@@ -181,7 +182,11 @@ function LinkVizInner({
       data-testid="custom-view-text-link"
       fade={isEditingParameter}
     >
-      <ExternalLink href={url ?? ""} target="_blank" rel="noreferrer">
+      <ExternalLink
+        href={url ?? ""}
+        target={getUrlTarget(url)}
+        rel="noreferrer"
+      >
         <UrlLinkDisplay url={url} />
       </ExternalLink>
     </DisplayLinkCardWrapper>
diff --git a/frontend/src/metabase/visualizations/visualizations/LinkViz/LinkViz.unit.spec.tsx b/frontend/src/metabase/visualizations/visualizations/LinkViz/LinkViz.unit.spec.tsx
index 4fc891dc31ec2f490be5e25a701a1bb58e1d7616..c6cf0d67d2f79c933f56ae6b7951cadcca296387 100644
--- a/frontend/src/metabase/visualizations/visualizations/LinkViz/LinkViz.unit.spec.tsx
+++ b/frontend/src/metabase/visualizations/visualizations/LinkViz/LinkViz.unit.spec.tsx
@@ -159,6 +159,41 @@ describe("LinkViz", () => {
       expect(screen.getByText("https://example23.com")).toBeInTheDocument();
       expect(screen.getByRole("link")).toHaveAttribute("target", "_blank");
     });
+
+    it("should open absolute links to question in the same tab", () => {
+      const dashcard = createMockLinkDashboardCard({
+        url: "http://localhost/question/1-example",
+      });
+
+      setup({
+        isEditing: false,
+        dashcard,
+        settings: dashcard.visualization_settings as LinkCardVizSettings,
+      });
+
+      expect(window.location.origin).toBe("http://localhost");
+
+      expect(
+        screen.getByText("http://localhost/question/1-example"),
+      ).toBeInTheDocument();
+
+      expect(screen.getByRole("link")).toHaveAttribute("target", "_self");
+    });
+
+    it("should open relative links to question in the same tab", () => {
+      const dashcard = createMockLinkDashboardCard({
+        url: "question/2-example",
+      });
+
+      setup({
+        isEditing: false,
+        dashcard,
+        settings: dashcard.visualization_settings as LinkCardVizSettings,
+      });
+
+      expect(screen.getByText("question/2-example")).toBeInTheDocument();
+      expect(screen.getByRole("link")).toHaveAttribute("target", "_self");
+    });
   });
 
   describe("entity links", () => {