diff --git a/src/client/app/common/views/pages/follow.vue b/src/client/app/common/views/pages/follow.vue
index f08ddf2642..4a01affa8a 100644
--- a/src/client/app/common/views/pages/follow.vue
+++ b/src/client/app/common/views/pages/follow.vue
@@ -72,11 +72,40 @@ export default Vue.extend({
 			const acct = new URL(location.href).searchParams.get('acct');
 			this.fetching = true;
 			Progress.start();
-			this.$root.api('users/show', parseAcct(acct)).then(user => {
-				this.user = user;
-				this.fetching = false;
-				Progress.done();
-			});
+			if (acct.match(/^https?:/)) {
+				this.$root.api('ap/show', {
+					uri: acct
+				}).then((res: { type: string, object: any })  => {
+					if (res.type !== 'User') {
+						this.$root.dialog({
+							type: 'error',
+							text: 'acct is not an user'
+						});
+					} else {
+						this.user = res.object;
+					}
+				}).catch((e: any) => {
+					this.$root.dialog({
+						type: 'error',
+						text: e.message
+					});
+				}).finally(() => {
+					this.fetching = false;
+					Progress.done();
+				});
+			} else {
+				this.$root.api('users/show', parseAcct(acct)).then((user: any) => {
+					this.user = user;
+				}).catch((e: any) => {
+					this.$root.dialog({
+						type: 'error',
+						text: e.message
+					});
+				}).finally(() => {
+					this.fetching = false;
+					Progress.done();
+				});
+			}
 		},
 
 		async onClick() {