diff --git a/Iceshrimp.Frontend/Components/HeadTitle.razor b/Iceshrimp.Frontend/Components/HeadTitle.razor
new file mode 100644
index 00000000..505e6fab
--- /dev/null
+++ b/Iceshrimp.Frontend/Components/HeadTitle.razor
@@ -0,0 +1,24 @@
+@using Iceshrimp.Frontend.Core.Services
+@inject MetadataService Metadata;
+
+@if (string.IsNullOrWhiteSpace(Text))
+{
+ @InstanceName
+}
+else
+{
+ @Text | @InstanceName
+}
+
+@code {
+ [Parameter] public string? Text { get; set; }
+ private string InstanceName { get; set; } = "Iceshrimp.NET";
+
+ protected override async Task OnInitializedAsync()
+ {
+ var metadata = await Metadata.Instance.Value;
+
+ if (metadata.Name != null)
+ InstanceName = metadata.Name;
+ }
+}
\ No newline at end of file