diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
index 92c75f187314745c2c798583a6da9cd9e9d8e4e8..70ae123b3e395c76720146db7505674835772f57 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
@@ -14,7 +14,6 @@ import android.view.ViewGroup;
 import android.widget.ImageButton;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.AuthorView;
@@ -98,9 +97,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 
 		// author and date
 		BlogPostHeader post = item.getPostHeader();
-		Author a = post.getAuthor();
-		author.setAuthor(a);
-		author.setAuthorInfo(post.getAuthorInfo());
+		author.setAuthor(post.getAuthor(), post.getAuthorInfo());
 		author.setDate(post.getTimestamp());
 		author.setPersona(
 				item.isRssFeed() ? AuthorView.RSS_FEED : AuthorView.NORMAL);
@@ -143,8 +140,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 
 	private void onBindComment(BlogCommentItem item) {
 		// reblogger
-		reblogger.setAuthor(item.getAuthor());
-		reblogger.setAuthorInfo(item.getAuthorInfo());
+		reblogger.setAuthor(item.getAuthor(), item.getAuthorInfo());
 		reblogger.setDate(item.getTimestamp());
 		if (!fullText) {
 			reblogger.setAuthorClickable(v -> listener.onAuthorClick(item));
@@ -165,8 +161,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 			AuthorView author = v.findViewById(R.id.authorView);
 			TextView text = v.findViewById(R.id.textView);
 
-			author.setAuthor(c.getAuthor());
-			author.setAuthorInfo(c.getAuthorInfo());
+			author.setAuthor(c.getAuthor(), c.getAuthorInfo());
 			author.setDate(c.getTimestamp());
 			// TODO make author clickable #624
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
index accaced350ef942df4167b48ecb8106518d33df3..6ccab7c6387f11790d79d3d85f2835c896e76747 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
@@ -31,8 +31,7 @@ class MemberListItemHolder extends RecyclerView.ViewHolder {
 
 	protected void bind(MemberListItem item) {
 		// member name, avatar and author info
-		author.setAuthor(item.getMember());
-		author.setAuthorInfo(item.getAuthorInfo());
+		author.setAuthor(item.getMember(), item.getAuthorInfo());
 
 		// online status of visible contacts
 		if (item.getContactId() != null) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java
index a88f709ed1572f5e3e9eecc7fc43a5384ebc1fb9..529fa7d0013ab617acf79c4384d41ea0d4970290 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java
@@ -43,9 +43,8 @@ public abstract class BaseThreadItemViewHolder<I extends ThreadItem>
 	public void bind(I item, ThreadItemListener<I> listener) {
 		textView.setText(StringUtils.trim(item.getText()));
 
-		author.setAuthor(item.getAuthor());
+		author.setAuthor(item.getAuthor(), item.getAuthorInfo());
 		author.setDate(item.getTimestamp());
-		author.setAuthorInfo(item.getAuthorInfo());
 
 		if (item.isHighlighted()) {
 			layout.setActivated(true);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
index ff18520f4d4ade8b28e8c928666505120b8e0343..12cbbb134474c2c16b1e02c1d7adf35828b9c968 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
@@ -33,7 +33,9 @@ import android.view.View;
 import android.widget.TextView;
 
 import org.acra.ACRA;
+import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
+import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
 import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
@@ -74,6 +76,17 @@ public class UiUtils {
 	public static final int TEASER_LENGTH = 320;
 	public static final float GREY_OUT = 0.5f;
 
+	public static String getContactDisplayName(Author author,
+			@Nullable String alias) {
+		String name = author.getName();
+		if (alias == null) return name;
+		else return String.format("%s (%s)", alias, name);
+	}
+
+	public static String getContactDisplayName(Contact c) {
+		return getContactDisplayName(c.getAuthor(), c.getAlias());
+	}
+
 	public static void setError(TextInputLayout til, @Nullable String error,
 			boolean set) {
 		if (set) {
@@ -127,7 +140,9 @@ public class UiUtils {
 		return builder;
 	}
 
-	public static Spanned getSpanned(String s) {
+	public static Spanned getSpanned(@Nullable String s) {
+		// TODO move to HtmlCompat
+		// https://commonsware.com/blog/2018/05/29/at-last-htmlcompat.html
 		return Html.fromHtml(s);
 	}
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java
index 783c3dcd09cca33dfc1bcce7c5d3cfc9d5bbdcca..86994db22b94c2d4cf37e4ea28784ef3dd9322fa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java
@@ -26,6 +26,7 @@ import static android.graphics.Typeface.BOLD;
 import static android.util.TypedValue.COMPLEX_UNIT_PX;
 import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
 import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
 import static org.briarproject.briar.android.util.UiUtils.resolveAttribute;
 
 @UiThread
@@ -70,16 +71,12 @@ public class AuthorView extends ConstraintLayout {
 		this(context, null);
 	}
 
-	public void setAuthor(Author author) {
-		authorName.setText(author.getName());
+	public void setAuthor(Author author, AuthorInfo authorInfo) {
+		authorName
+				.setText(getContactDisplayName(author, authorInfo.getAlias()));
 		IdenticonDrawable d = new IdenticonDrawable(author.getId().getBytes());
 		avatar.setImageDrawable(d);
 
-		invalidate();
-		requestLayout();
-	}
-
-	public void setAuthorInfo(AuthorInfo authorInfo) {
 		if (authorInfo.getStatus() != NONE) {
 			trustIndicator.setTrustLevel(authorInfo.getStatus());
 			trustIndicator.setVisibility(VISIBLE);
@@ -123,7 +120,7 @@ public class AuthorView extends ConstraintLayout {
 	 *
 	 * Attention: RSS_FEED and RSS_FEED_REBLOGGED change the avatar
 	 *            and override the one set by
-	 *            {@link AuthorView#setAuthor(Author)}.
+	 *            {@link AuthorView#setAuthor(Author, AuthorInfo)}.
 	 */
 	public void setPersona(int persona) {
 		switch (persona) {