diff --git a/.changeset/solid-pianos-act.md b/.changeset/solid-pianos-act.md
new file mode 100644
index 0000000000..701e7ed755
--- /dev/null
+++ b/.changeset/solid-pianos-act.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-components': patch
+---
+
+Use Backstage Link component for markdown anchor rendering to ensure consistent internal and external link behavior.
diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx
index 6d978ebb6f..50bcf3956e 100644
--- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx
+++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx
@@ -23,6 +23,7 @@ import { HeadingProps } from 'react-markdown/lib/ast-to-react';
import rehypeRaw from 'rehype-raw';
import rehypeSanitize, { defaultSchema } from 'rehype-sanitize';
import type { PluggableList } from 'react-markdown/lib/react-markdown';
+import { Link } from '../Link';
export type MarkdownContentClassKey = 'markdown';
@@ -109,6 +110,15 @@ const components: Options['components'] = {
h4: headingRenderer,
h5: headingRenderer,
h6: headingRenderer,
+
+ a: ({ href, children, ...props }) =>
+ href ? (
+
+ {children}
+
+ ) : (
+ <>{children}>
+ ),
};
const gfmRehypePlugins: PluggableList = [
diff --git a/plugins/scaffolder-react/src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx b/plugins/scaffolder-react/src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx
index 6e2c6171e5..cfe3d57e74 100644
--- a/plugins/scaffolder-react/src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx
+++ b/plugins/scaffolder-react/src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx
@@ -96,10 +96,7 @@ export const DefaultTemplateOutputs = (props: {
titleTypographyProps={{ component: 'h2' }}
>
-
+