diff --git a/Telegram/Resources/icons/dialogs/inaccessible_userpic.png b/Telegram/Resources/icons/dialogs/inaccessible_userpic.png
new file mode 100644
index 000000000..0ea974ff2
Binary files /dev/null and b/Telegram/Resources/icons/dialogs/inaccessible_userpic.png differ
diff --git a/Telegram/Resources/icons/dialogs/inaccessible_userpic@2x.png b/Telegram/Resources/icons/dialogs/inaccessible_userpic@2x.png
new file mode 100644
index 000000000..38fa1308a
Binary files /dev/null and b/Telegram/Resources/icons/dialogs/inaccessible_userpic@2x.png differ
diff --git a/Telegram/Resources/icons/dialogs/inaccessible_userpic@3x.png b/Telegram/Resources/icons/dialogs/inaccessible_userpic@3x.png
new file mode 100644
index 000000000..454ad3951
Binary files /dev/null and b/Telegram/Resources/icons/dialogs/inaccessible_userpic@3x.png differ
diff --git a/Telegram/Resources/icons/info/inaccessible_userpic.png b/Telegram/Resources/icons/info/inaccessible_userpic.png
new file mode 100644
index 000000000..426fa1ee5
Binary files /dev/null and b/Telegram/Resources/icons/info/inaccessible_userpic.png differ
diff --git a/Telegram/Resources/icons/info/inaccessible_userpic@2x.png b/Telegram/Resources/icons/info/inaccessible_userpic@2x.png
new file mode 100644
index 000000000..aabebd344
Binary files /dev/null and b/Telegram/Resources/icons/info/inaccessible_userpic@2x.png differ
diff --git a/Telegram/Resources/icons/info/inaccessible_userpic@3x.png b/Telegram/Resources/icons/info/inaccessible_userpic@3x.png
new file mode 100644
index 000000000..1b943895d
Binary files /dev/null and b/Telegram/Resources/icons/info/inaccessible_userpic@3x.png differ
diff --git a/Telegram/SourceFiles/data/data_peer.cpp b/Telegram/SourceFiles/data/data_peer.cpp
index 8b005e31e..41f466499 100644
--- a/Telegram/SourceFiles/data/data_peer.cpp
+++ b/Telegram/SourceFiles/data/data_peer.cpp
@@ -248,9 +248,12 @@ void PeerData::updateNameDelayed(
 
 not_null<Ui::EmptyUserpic*> PeerData::ensureEmptyUserpic() const {
 	if (!_userpicEmpty) {
+		const auto user = asUser();
 		_userpicEmpty = std::make_unique<Ui::EmptyUserpic>(
 			Data::PeerUserpicColor(id),
-			name());
+			user && user->isInaccessible()
+				? Ui::EmptyUserpic::InaccessibleName()
+				: name());
 	}
 	return _userpicEmpty.get();
 }
diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style
index 510962dc6..e9b035424 100644
--- a/Telegram/SourceFiles/dialogs/dialogs.style
+++ b/Telegram/SourceFiles/dialogs/dialogs.style
@@ -319,6 +319,7 @@ dialogsForumIconOver: icon {{ "dialogs/dialogs_forum", dialogsChatIconFgOver, po
 dialogsForumIconActive: icon {{ "dialogs/dialogs_forum", dialogsChatIconFgActive, point(1px, 4px) }};
 dialogsArchiveUserpic: icon {{ "archive_userpic", historyPeerUserpicFg }};
 dialogsRepliesUserpic: icon {{ "replies_userpic", historyPeerUserpicFg }};
+dialogsInaccessibleUserpic: icon {{ "dialogs/inaccessible_userpic", historyPeerUserpicFg }};
 
 dialogsSendStateSkip: 20px;
 dialogsSendingIcon: icon {{ "dialogs/dialogs_sending", dialogsSendingIconFg, point(8px, 4px) }};
diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style
index 6520f37e5..a9abd8126 100644
--- a/Telegram/SourceFiles/info/info.style
+++ b/Telegram/SourceFiles/info/info.style
@@ -326,6 +326,8 @@ infoTopicCover: InfoProfileCover(infoProfileMegagroupCover) {
 	statusTop: 38px;
 }
 
+infoProfileInaccessibleUserpic: icon {{ "info/inaccessible_userpic", historyPeerUserpicFg }};
+
 infoVerifiedCheckPosition: point(4px, 2px);
 infoVerifiedCheck: icon {
 	{ "profile_verified_star", profileVerifiedCheckBg },
diff --git a/Telegram/SourceFiles/ui/empty_userpic.cpp b/Telegram/SourceFiles/ui/empty_userpic.cpp
index e7190c8db..b5b90fd34 100644
--- a/Telegram/SourceFiles/ui/empty_userpic.cpp
+++ b/Telegram/SourceFiles/ui/empty_userpic.cpp
@@ -23,7 +23,13 @@ namespace {
 [[nodiscard]] bool IsExternal(const QString &name) {
 	return !name.isEmpty()
 		&& (name.front() == QChar(0))
-		&& QStringView(name).mid(1) == qstr("external");
+		&& QStringView(name).mid(1) == u"external"_q;
+}
+
+[[nodiscard]] bool IsInaccessible(const QString &name) {
+	return !name.isEmpty()
+		&& (name.front() == QChar(0))
+		&& QStringView(name).mid(1) == u"inaccessible"_q;
 }
 
 void PaintSavedMessagesInner(
@@ -161,6 +167,33 @@ void PaintExternalMessagesInner(
 		fg);
 }
 
+void PaintInaccessibleAccountInner(
+		QPainter &p,
+		int x,
+		int y,
+		int size,
+		const style::color &fg) {
+	if (size > st::defaultDialogRow.photoSize) {
+		PaintIconInner(
+			p,
+			x,
+			y,
+			size,
+			st::infoProfilePhotoInnerSize,
+			st::infoProfileInaccessibleUserpic,
+			fg);
+	} else {
+		PaintIconInner(
+			p,
+			x,
+			y,
+			size,
+			st::defaultDialogRow.photoSize,
+			st::dialogsInaccessibleUserpic,
+			fg);
+	}
+}
+
 template <typename Callback>
 [[nodiscard]] QPixmap Generate(int size, Callback callback) {
 	auto result = QImage(
@@ -186,6 +219,10 @@ QString EmptyUserpic::ExternalName() {
 	return QChar(0) + u"external"_q;
 }
 
+QString EmptyUserpic::InaccessibleName() {
+	return QChar(0) + u"inaccessible"_q;
+}
+
 template <typename Callback>
 void EmptyUserpic::paint(
 		QPainter &p,
@@ -207,6 +244,8 @@ void EmptyUserpic::paint(
 
 	if (IsExternal(_string)) {
 		PaintExternalMessagesInner(p, x, y, size, st::historyPeerUserpicFg);
+	} else if (IsInaccessible(_string)) {
+		PaintInaccessibleAccountInner(p, x, y, size, st::historyPeerUserpicFg);
 	} else {
 		p.setFont(font);
 		p.setBrush(Qt::NoBrush);
@@ -410,7 +449,7 @@ QPixmap EmptyUserpic::generate(int size) {
 }
 
 void EmptyUserpic::fillString(const QString &name) {
-	if (IsExternal(name)) {
+	if (IsExternal(name) || IsInaccessible(name)) {
 		_string = name;
 		return;
 	}
diff --git a/Telegram/SourceFiles/ui/empty_userpic.h b/Telegram/SourceFiles/ui/empty_userpic.h
index c990a4e44..e657e6a59 100644
--- a/Telegram/SourceFiles/ui/empty_userpic.h
+++ b/Telegram/SourceFiles/ui/empty_userpic.h
@@ -12,6 +12,7 @@ namespace Ui {
 class EmptyUserpic {
 public:
 	[[nodiscard]] static QString ExternalName();
+	[[nodiscard]] static QString InaccessibleName();
 
 	EmptyUserpic(const style::color &color, const QString &name);