diff --git a/assets/favicon.ico b/assets/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..9be1ff62956cd5d1e21540bee043a3c6c144d453
Binary files /dev/null and b/assets/favicon.ico differ
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index e5700fe05984235880ec7d9d0a4c5e74ef5623ca..5729da8da899d471a078f673987abec4c49dc82d 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -322,7 +322,7 @@ proxyRemoteFilesDescription: "この設定を有効にすると、未保存ま
 driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量"
 driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量"
 inMb: "メガバイト単位"
-iconUrl: "アイコン画像のURL"
+iconUrl: "アイコン画像のURL (faviconなど)"
 bannerUrl: "バナー画像のURL"
 basicInfo: "基本情報"
 pinnedUsers: "ピン留めユーザー"
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index 7b087bbf5bf0ddfd03828e0f257a503c197af185..ea356206ffd8f32b94b7f275bece648483ea6d7b 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -45,7 +45,7 @@ app.use(views(__dirname + '/views', {
 }));
 
 // Serve favicon
-app.use(favicon(`${__dirname}/../../../assets/favicon.png`));
+app.use(favicon(`${__dirname}/../../../assets/favicon.ico`));
 
 // Common request handler
 app.use(async (ctx, next) => {
diff --git a/test/fetch-resource.ts b/test/fetch-resource.ts
index bd3a325dc2c50557ad6e639307f074009514344e..12a37b6cb0025ea95a2907225e96900bef2730a8 100644
--- a/test/fetch-resource.ts
+++ b/test/fetch-resource.ts
@@ -22,6 +22,7 @@ const UNSPECIFIED = '*/*';
 
 // Response Contet-Type
 const AP = 'application/activity+json; charset=utf-8';
+const JSON = 'application/json; charset=utf-8';
 const HTML = 'text/html; charset=utf-8';
 
 describe('Fetch resource', () => {
@@ -50,33 +51,39 @@ describe('Fetch resource', () => {
 		}));
 
 		it('GET root', async(async () => {
-			const res = await simpleGet('/', 'text/html');
+			const res = await simpleGet('/');
 			assert.strictEqual(res.status, 200);
+			assert.strictEqual(res.type, HTML);
 		}));
 
 		it('GET docs', async(async () => {
-			const res = await simpleGet('/docs/ja-JP/about', 'text/html');
+			const res = await simpleGet('/docs/ja-JP/about');
 			assert.strictEqual(res.status, 200);
+			assert.strictEqual(res.type, HTML);
 		}));
 
 		it('GET api-doc', async(async () => {
-			const res = await simpleGet('/api-doc', 'text/html');
+			const res = await simpleGet('/api-doc');
 			assert.strictEqual(res.status, 200);
+			assert.strictEqual(res.type, HTML);
 		}));
 
 		it('GET api.json', async(async () => {
-			const res = await simpleGet('/api.json', 'application/json');
+			const res = await simpleGet('/api.json');
 			assert.strictEqual(res.status, 200);
+			assert.strictEqual(res.type, JSON);
 		}));
 
 		it('GET favicon.ico', async(async () => {
-			const res = await simpleGet('/favicon.ico', 'image/png');
+			const res = await simpleGet('/favicon.ico');
 			assert.strictEqual(res.status, 200);
+			assert.strictEqual(res.type, 'image/x-icon');
 		}));
 
 		it('GET apple-touch-icon.png', async(async () => {
-			const res = await simpleGet('/apple-touch-icon.png', 'image/png');
+			const res = await simpleGet('/apple-touch-icon.png');
 			assert.strictEqual(res.status, 200);
+			assert.strictEqual(res.type, 'image/png');
 		}));
 	});
 
diff --git a/test/utils.ts b/test/utils.ts
index 55e877a8a2c890e7a69bd0427f962b43f42184a8..b0393ee192dc42ed43c391ae1972edc4e561a434 100644
--- a/test/utils.ts
+++ b/test/utils.ts
@@ -110,7 +110,7 @@ export function connectStream(user: any, channel: string, listener: (message: Re
 	});
 }
 
-export const simpleGet = async (path: string, accept: string): Promise<{ status?: number, type?: string, location?: string }> => {
+export const simpleGet = async (path: string, accept = '*/*'): Promise<{ status?: number, type?: string, location?: string }> => {
 	// node-fetchだと3xxを取れない
 	return await new Promise((resolve, reject) => {
 		const req = http.request(`http://localhost:${port}${path}`, {