diff --git a/packages/backend/assets/notification-badges/LICENSE b/packages/backend/assets/notification-badges/LICENSE
deleted file mode 100644
index 841c4c682b152916711218db38949621278781ef..0000000000000000000000000000000000000000
--- a/packages/backend/assets/notification-badges/LICENSE
+++ /dev/null
@@ -1,5 +0,0 @@
-Font Awesome Icons
--------------------------
-
-â’¸ Font Awesome
-CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
diff --git a/packages/backend/assets/notification-badges/at.png b/packages/backend/assets/notification-badges/at.png
deleted file mode 100644
index d1492856de2b2f837a24a439eaa13631283aa87a..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/at.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/check.png b/packages/backend/assets/notification-badges/check.png
deleted file mode 100644
index baeb76babfa3f9f8dff025f7a007a0be3eeb69b8..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/check.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/clipboard-check-solid.png b/packages/backend/assets/notification-badges/clipboard-check-solid.png
deleted file mode 100644
index d8cdfa9da4562d7a247ab7c734933be48bc68fc6..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/clipboard-check-solid.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/clock.png b/packages/backend/assets/notification-badges/clock.png
deleted file mode 100644
index 9323f8f3070dd4ef538f7df33d54975c449d7cf6..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/clock.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/comments.png b/packages/backend/assets/notification-badges/comments.png
deleted file mode 100644
index bc8a1c35b4423bc08af88c3c72d4d29c6e81c6bf..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/comments.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/id-card-alt.png b/packages/backend/assets/notification-badges/id-card-alt.png
deleted file mode 100644
index 67e1410e34cb2a6ec1a17ebd89dc15fdfff87205..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/id-card-alt.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/plus.png b/packages/backend/assets/notification-badges/plus.png
deleted file mode 100644
index 05362c122bd2162d5c5ed95c7e8f2d40d9e7eff4..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/plus.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/poll-h.png b/packages/backend/assets/notification-badges/poll-h.png
deleted file mode 100644
index 3b7ded66597679a8d19ef9eccc09834fa7a4f222..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/poll-h.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/quote-right.png b/packages/backend/assets/notification-badges/quote-right.png
deleted file mode 100644
index 0fa483765481dd43d88a470c45614c6a782c748b..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/quote-right.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/reply.png b/packages/backend/assets/notification-badges/reply.png
deleted file mode 100644
index 77021f71a7af666a33db652aaaf997508200c769..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/reply.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/retweet.png b/packages/backend/assets/notification-badges/retweet.png
deleted file mode 100644
index dc6106048107a8459bd6efc921835d9bf2e25d9b..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/retweet.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/satellite.png b/packages/backend/assets/notification-badges/satellite.png
deleted file mode 100644
index 0e1831e8a04a1c92fbcba2d48ee62a94c4ad0a3b..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/satellite.png and /dev/null differ
diff --git a/packages/backend/assets/notification-badges/user-plus.png b/packages/backend/assets/notification-badges/user-plus.png
deleted file mode 100644
index 9d376d04d666f856fc927a82cf78ddadc4629e8b..0000000000000000000000000000000000000000
Binary files a/packages/backend/assets/notification-badges/user-plus.png and /dev/null differ
diff --git a/packages/backend/assets/tabler-badges/LICENSE b/packages/backend/assets/tabler-badges/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..cab2551f6760a87cb67b86ce09b0be8bdb656142
--- /dev/null
+++ b/packages/backend/assets/tabler-badges/LICENSE
@@ -0,0 +1,24 @@
+Tabler Icons  
+https://github.com/tabler/tabler-icons/blob/master/LICENSE
+====
+MIT License
+
+Copyright (c) 2020-2022 Paweł Kuna
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/packages/backend/assets/tabler-badges/antenna.png b/packages/backend/assets/tabler-badges/antenna.png
new file mode 100644
index 0000000000000000000000000000000000000000..013c7f4e61cec955ccd453551b9c056ed9ed901b
Binary files /dev/null and b/packages/backend/assets/tabler-badges/antenna.png differ
diff --git a/packages/backend/assets/tabler-badges/arrow-back-up.png b/packages/backend/assets/tabler-badges/arrow-back-up.png
new file mode 100644
index 0000000000000000000000000000000000000000..a253384c72bce2068c2b4518b7403b7dcce4cdaf
Binary files /dev/null and b/packages/backend/assets/tabler-badges/arrow-back-up.png differ
diff --git a/packages/backend/assets/tabler-badges/at.png b/packages/backend/assets/tabler-badges/at.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbf8df4925a5211183e17e6d4f64e46d75300509
Binary files /dev/null and b/packages/backend/assets/tabler-badges/at.png differ
diff --git a/packages/backend/assets/tabler-badges/chart-arrows.png b/packages/backend/assets/tabler-badges/chart-arrows.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2b8a2d99367e27fc9eeb5a7ccd964a3a150b32b
Binary files /dev/null and b/packages/backend/assets/tabler-badges/chart-arrows.png differ
diff --git a/packages/backend/assets/tabler-badges/circle-check.png b/packages/backend/assets/tabler-badges/circle-check.png
new file mode 100644
index 0000000000000000000000000000000000000000..6464d5133cc838edc4f68f9a98e711b0fae44fe5
Binary files /dev/null and b/packages/backend/assets/tabler-badges/circle-check.png differ
diff --git a/packages/backend/assets/tabler-badges/messages.png b/packages/backend/assets/tabler-badges/messages.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa5072ebba50da94e0ca42d23f5756579ec610ab
Binary files /dev/null and b/packages/backend/assets/tabler-badges/messages.png differ
diff --git a/packages/backend/assets/notification-badges/null.png b/packages/backend/assets/tabler-badges/null.png
similarity index 100%
rename from packages/backend/assets/notification-badges/null.png
rename to packages/backend/assets/tabler-badges/null.png
diff --git a/packages/backend/assets/tabler-badges/plus.png b/packages/backend/assets/tabler-badges/plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..f13a86f4cdfad66e7b19b22d411d86335cf21e3e
Binary files /dev/null and b/packages/backend/assets/tabler-badges/plus.png differ
diff --git a/packages/backend/assets/tabler-badges/quote.png b/packages/backend/assets/tabler-badges/quote.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0fc6f3fb42884f7a7a1f94b5706a4b2a2ea368b
Binary files /dev/null and b/packages/backend/assets/tabler-badges/quote.png differ
diff --git a/packages/backend/assets/tabler-badges/repeat.png b/packages/backend/assets/tabler-badges/repeat.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab548043f73bed11cce7cdad74a8f7bf0ab2fbf3
Binary files /dev/null and b/packages/backend/assets/tabler-badges/repeat.png differ
diff --git a/packages/backend/assets/tabler-badges/user-plus.png b/packages/backend/assets/tabler-badges/user-plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ae96f0b7379d9896a6570c91b42c1c08f63b20b
Binary files /dev/null and b/packages/backend/assets/tabler-badges/user-plus.png differ
diff --git a/packages/backend/assets/tabler-badges/users.png b/packages/backend/assets/tabler-badges/users.png
new file mode 100644
index 0000000000000000000000000000000000000000..7862963327a034ab20da73c84ca18aea46080375
Binary files /dev/null and b/packages/backend/assets/tabler-badges/users.png differ
diff --git a/packages/sw/src/scripts/create-notification.ts b/packages/sw/src/scripts/create-notification.ts
index 4b006e0f5ac9df0a7236f7b6899d82ced1b8bb1b..6744687fcc568385b8a0e6d2ed5ec83ea8f0cf17 100644
--- a/packages/sw/src/scripts/create-notification.ts
+++ b/packages/sw/src/scripts/create-notification.ts
@@ -3,14 +3,21 @@
  */
 import { swLang } from '@/scripts/lang';
 import { cli } from '@/scripts/operations';
-import { pushNotificationDataMap } from '@/types';
+import { badgeNames, pushNotificationDataMap } from '@/types';
 import getUserName from '@/scripts/get-user-name';
 import { I18n } from '@/scripts/i18n';
 import { getAccountFromId } from '@/scripts/get-account-from-id';
 import { char2fileName } from '@/scripts/twemoji-base';
 import * as url from '@/scripts/url';
 
-const iconUrl = (name: string) => `/static-assets/notification-badges/${name}.png`;
+const iconUrl = (name: badgeNames) => `/static-assets/tabler-badges/${name}.png`;
+/* How to add a new badge:
+ * 1. Find the icon and download png from https://tabler-icons.io/
+ * 2. vips resize ~/Downloads/icon-name.png vipswork.png 0.4; vips scRGB2BW vipswork.png ~/icon-name.png"[compression=9,strip]"; rm vipswork.png;
+ * 3. mv ~/icon-name.png ~/misskey/packages/backend/assets/tabler-badges/
+ * 4. Add 'icon-name' to badgeNames
+ * 5. Add `badge: iconUrl('icon-name'),`
+ */
 
 export async function createNotification<K extends keyof pushNotificationDataMap>(data: pushNotificationDataMap[K]) {
 	const n = await composeNotification(data);
@@ -75,7 +82,7 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 					return [t('_notification.youGotReply', { name: getUserName(data.body.user) }), {
 						body: data.body.note.text || '',
 						icon: data.body.user.avatarUrl,
-						badge: iconUrl('reply'),
+						badge: iconUrl('arrow-back-up'),
 						data,
 						actions: [
 							{
@@ -89,7 +96,7 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 					return [t('_notification.youRenoted', { name: getUserName(data.body.user) }), {
 						body: data.body.note.text || '',
 						icon: data.body.user.avatarUrl,
-						badge: iconUrl('retweet'),
+						badge: iconUrl('repeat'),
 						data,
 						actions: [
 							{
@@ -103,7 +110,7 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 					return [t('_notification.youGotQuote', { name: getUserName(data.body.user) }), {
 						body: data.body.note.text || '',
 						icon: data.body.user.avatarUrl,
-						badge: iconUrl('quote-right'),
+						badge: iconUrl('quote'),
 						data,
 						actions: [
 							{
@@ -171,7 +178,8 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 				case 'pollEnded':
 					return [t('_notification.pollEnded'), {
 						body: data.body.note.text || '',
-						badge: iconUrl('clipboard-check-solid'),
+						badge: iconUrl('chart-arrows'),
+						tag: `poll:${data.body.note.id}`,
 						data,
 					}];
 
@@ -179,7 +187,7 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 					return [t('_notification.youReceivedFollowRequest'), {
 						body: getUserName(data.body.user),
 						icon: data.body.user.avatarUrl,
-						badge: iconUrl('clock'),
+						badge: iconUrl('user-plus'),
 						data,
 						actions: [
 							{
@@ -197,14 +205,14 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 					return [t('_notification.yourFollowRequestAccepted'), {
 						body: getUserName(data.body.user),
 						icon: data.body.user.avatarUrl,
-						badge: iconUrl('check'),
+						badge: iconUrl('circle-check'),
 						data,
 					}];
 
 				case 'groupInvited':
 					return [t('_notification.youWereInvitedToGroup', { userName: getUserName(data.body.user) }), {
 						body: data.body.invitation.group.name,
-						badge: iconUrl('id-card-alt'),
+						badge: iconUrl('users'),
 						data,
 						actions: [
 							{
@@ -232,7 +240,7 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 			if (data.body.groupId === null) {
 				return [t('_notification.youGotMessagingMessageFromUser', { name: getUserName(data.body.user) }), {
 					icon: data.body.user.avatarUrl,
-					badge: iconUrl('comments'),
+					badge: iconUrl('messages'),
 					tag: `messaging:user:${data.body.userId}`,
 					data,
 					renotify: true,
@@ -240,7 +248,7 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 			}
 			return [t('_notification.youGotMessagingMessageFromGroup', { name: data.body.group.name }), {
 				icon: data.body.user.avatarUrl,
-				badge: iconUrl('comments'),
+				badge: iconUrl('messages'),
 				tag: `messaging:group:${data.body.groupId}`,
 				data,
 				renotify: true,
@@ -249,7 +257,7 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
 			return [t('_notification.unreadAntennaNote', { name: data.body.antenna.name }), {
 				body: `${getUserName(data.body.note.user)}: ${data.body.note.text || ''}`,
 				icon: data.body.note.user.avatarUrl,
-				badge: iconUrl('satellite'),
+				badge: iconUrl('antenna'),
 				tag: `antenna:${data.body.antenna.id}`,
 				data,
 				renotify: true,
diff --git a/packages/sw/src/types.ts b/packages/sw/src/types.ts
index 2e23de8e1d5c912728c1cf57ebdad7c6f9c75511..3b35de407969bcda6855912753b073f99d691dbb 100644
--- a/packages/sw/src/types.ts
+++ b/packages/sw/src/types.ts
@@ -36,3 +36,18 @@ export type pushNotificationData<K extends keyof pushNotificationDataSourceMap>
 export type pushNotificationDataMap = {
 	[K in keyof pushNotificationDataSourceMap]: pushNotificationData<K>;
 };
+
+export type badgeNames = 
+	'null'
+	| 'antenna'
+	| 'arrow-back-up'
+	| 'at'
+	| 'chart-arrows'
+	| 'circle-check'
+	| 'messages'
+	| 'plus'
+	| 'quote'
+	| 'repeat'
+	| 'user-plus'
+	| 'users'
+	;