diff --git a/Foxnouns.Backend/Controllers/MembersController.cs b/Foxnouns.Backend/Controllers/MembersController.cs
index ba9cf28..968b571 100644
--- a/Foxnouns.Backend/Controllers/MembersController.cs
+++ b/Foxnouns.Backend/Controllers/MembersController.cs
@@ -303,8 +303,8 @@ public class MembersController(
                     .SetProperty(u => u.LastActive, clock.GetCurrentInstant())
             );
 
-        // Re-fetch member to fetch the new sid
-        var updatedMember = await db.ResolveMemberAsync(CurrentUser!.Id, memberRef);
-        return Ok(memberRenderer.RenderMember(updatedMember, CurrentToken));
+        // Fetch the new sid then pass that to RenderMember
+        var newSid = await db.Members.Where(m => m.Id == member.Id).Select(m => m.Sid).FirstAsync();
+        return Ok(memberRenderer.RenderMember(member, CurrentToken, newSid));
     }
 }
diff --git a/Foxnouns.Backend/Controllers/UsersController.cs b/Foxnouns.Backend/Controllers/UsersController.cs
index 33c38d6..2693bef 100644
--- a/Foxnouns.Backend/Controllers/UsersController.cs
+++ b/Foxnouns.Backend/Controllers/UsersController.cs
@@ -346,13 +346,20 @@ public class UsersController(
                     .SetProperty(u => u.LastActive, clock.GetCurrentInstant())
             );
 
+        // Get the user's new sid
+        var newSid = await db
+            .Users.Where(u => u.Id == CurrentUser.Id)
+            .Select(u => u.Sid)
+            .FirstAsync();
+
         var user = await db.ResolveUserAsync(CurrentUser.Id);
         return Ok(
             await userRenderer.RenderUserAsync(
-                user,
+                CurrentUser,
                 CurrentUser,
                 CurrentToken,
-                renderMembers: false
+                renderMembers: false,
+                overrideSid: newSid
             )
         );
     }
diff --git a/Foxnouns.Backend/Services/MemberRendererService.cs b/Foxnouns.Backend/Services/MemberRendererService.cs
index 7d7cac0..717f06c 100644
--- a/Foxnouns.Backend/Services/MemberRendererService.cs
+++ b/Foxnouns.Backend/Services/MemberRendererService.cs
@@ -24,13 +24,17 @@ public class MemberRendererService(DatabaseContext db, Config config)
         return members.Select(m => RenderPartialMember(m, renderUnlisted));
     }
 
-    public MemberResponse RenderMember(Member member, Token? token = null)
+    public MemberResponse RenderMember(
+        Member member,
+        Token? token = null,
+        string? overrideSid = null
+    )
     {
         var renderUnlisted = token?.UserId == member.UserId && token.HasScope("user.read_hidden");
 
         return new MemberResponse(
             member.Id,
-            member.Sid,
+            overrideSid ?? member.Sid,
             member.Name,
             member.DisplayName ?? member.Name,
             member.Bio,
diff --git a/Foxnouns.Backend/Services/UserRendererService.cs b/Foxnouns.Backend/Services/UserRendererService.cs
index ceeba94..2911dd3 100644
--- a/Foxnouns.Backend/Services/UserRendererService.cs
+++ b/Foxnouns.Backend/Services/UserRendererService.cs
@@ -20,6 +20,7 @@ public class UserRendererService(
         Token? token = null,
         bool renderMembers = true,
         bool renderAuthMethods = false,
+        string? overrideSid = null,
         CancellationToken ct = default
     )
     {
@@ -59,7 +60,7 @@ public class UserRendererService(
 
         return new UserResponse(
             user.Id,
-            user.Sid,
+            overrideSid ?? user.Sid,
             user.Username,
             user.DisplayName,
             user.Bio,
diff --git a/Foxnouns.Frontend/src/lib/components/Avatar.svelte b/Foxnouns.Frontend/src/lib/components/Avatar.svelte
index 31f8355..99dd8f3 100644
--- a/Foxnouns.Frontend/src/lib/components/Avatar.svelte
+++ b/Foxnouns.Frontend/src/lib/components/Avatar.svelte
@@ -1,22 +1,23 @@
 
 
 
 
 
diff --git a/Foxnouns.Frontend/src/lib/components/Paginator.svelte b/Foxnouns.Frontend/src/lib/components/Paginator.svelte
new file mode 100644
index 0000000..07cbd8d
--- /dev/null
+++ b/Foxnouns.Frontend/src/lib/components/Paginator.svelte
@@ -0,0 +1,35 @@
+
+
+{#if pageCount > 1}
+	
 		
+ {$t("edit-profile.bio-length-hint", { + length: value.length, + maxLength, + })} +
+ +{#if value !== ""} +{sid}
+
+	
 		
-			{member.name}
+			{member.display_name}
 		
 		{#if pronouns}
 			
diff --git a/Foxnouns.Frontend/src/lib/i18n/locales/en.json b/Foxnouns.Frontend/src/lib/i18n/locales/en.json
index 5c026f9..7f1e377 100644
--- a/Foxnouns.Frontend/src/lib/i18n/locales/en.json
+++ b/Foxnouns.Frontend/src/lib/i18n/locales/en.json
@@ -6,13 +6,14 @@
   },
   "avatar-tooltip": "Avatar for {{name}}",
   "profile": {
-    "edit-member-profile-notice": "You are currently viewing the public profile of {memberName}.",
+    "edit-member-profile-notice": "You are currently viewing the public profile of {{memberName}}.",
     "edit-user-profile-notice": "You are currently viewing your public profile.",
     "edit-profile-link": "Edit profile",
     "names-header": "Names",
     "pronouns-header": "Pronouns",
     "default-members-header": "Members",
-    "create-member-button": "Create member"
+    "create-member-button": "Create member",
+    "back-to-user": "Back to {{name}}"
   },
   "title": {
     "log-in": "Log in",
@@ -59,7 +60,10 @@
     "validation-disallowed-value-2": "Allowed values are",
     "validation-reason": "Reason",
     "validation-generic": "The value you entered is not allowed here. Reason",
-    "extra-info-header": "Extra error information"
+    "extra-info-header": "Extra error information",
+    "noscript-title": "This page requires JavaScript",
+    "noscript-info": "This page requires JavaScript to function correctly. Some buttons may not work, or the page may not work at all.",
+    "noscript-short": "Requires JavaScript"
   },
   "settings": {
     "general-information-tab": "General information",
@@ -86,7 +90,9 @@
     "log-out-hint": "Use this button to log out on this device only.",
     "log-out-button": "Log out",
     "avatar": "Avatar",
-    "username-update-success": "Successfully changed your username!"
+    "username-update-success": "Successfully changed your username!",
+    "create-member-title": "Create a new member",
+    "create-member-name-label": "Member name"
   },
   "yes": "Yes",
   "no": "No",
@@ -112,7 +118,19 @@
     "profile-options-header": "Profile options",
     "bio-tab": "Bio",
     "saved-changes": "Successfully saved changes!",
-    "bio-length-hint": "Using {{length}}/{{maxLength}} characters"
+    "bio-length-hint": "Using {{length}}/{{maxLength}} characters",
+    "preview": "Preview",
+    "fields-tab": "Fields",
+    "flags-links-tab": "Flags & links",
+    "back-to-settings-tab": "Back to settings",
+    "member-header": "Editing member {{name}}",
+    "username": "Username",
+    "change-username-info": "As changing your username will also change all of your members' links, you can only change it in your account settings.",
+    "change-username-link": "Go to settings",
+    "member-name": "Name",
+    "change-member-name": "Change name",
+    "display-name": "Display name"
   },
-  "save-changes": "Save changes"
+  "save-changes": "Save changes",
+  "change": "Change"
 }
diff --git a/Foxnouns.Frontend/src/routes/@[username]/+page.server.ts b/Foxnouns.Frontend/src/routes/@[username]/+page.server.ts
index 6c582bc..99e7359 100644
--- a/Foxnouns.Frontend/src/routes/@[username]/+page.server.ts
+++ b/Foxnouns.Frontend/src/routes/@[username]/+page.server.ts
@@ -1,6 +1,8 @@
 import { apiRequest } from "$api";
 import type { PartialMember, UserWithMembers } from "$api/models";
 
+const MEMBERS_PER_PAGE = 20;
+
 export const load = async ({ params, fetch, cookies, url }) => {
 	const user = await apiRequest
- {$t("edit-profile.bio-length-hint", { - length: bio.length, - maxLength: data.meta.limits.bio_length, - })} -
- -{#if bio !== ""} -