diff --git a/package.json b/package.json
index e5eb6b81fc..23bcced515 100644
--- a/package.json
+++ b/package.json
@@ -114,7 +114,6 @@
 		"cssnano": "4.1.10",
 		"dateformat": "3.0.3",
 		"deep-equal": "1.0.1",
-		"deepcopy": "0.6.3",
 		"diskusage": "1.0.0",
 		"double-ended-queue": "2.1.0-0",
 		"elasticsearch": "15.4.1",
diff --git a/src/@types/deepcopy.d.ts b/src/@types/deepcopy.d.ts
deleted file mode 100644
index 3eb08d5772..0000000000
--- a/src/@types/deepcopy.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-declare module 'deepcopy';
-
-declare namespace deepcopy {
-	type DeepcopyCustomizerValueType = 'Object';
-
-	type DeepcopyCustomizer<T> = (
-		value: T,
-		valueType: DeepcopyCustomizerValueType) => T;
-
-	interface DeepcopyOptions<T> {
-		customizer: DeepcopyCustomizer<T>;
-	}
-
-	export function deepcopy<T>(
-		value: T,
-		options?: DeepcopyOptions<T> | DeepcopyCustomizer<T>): T;
-}
diff --git a/src/misc/deepcopy.ts b/src/misc/deepcopy.ts
new file mode 100644
index 0000000000..b3bf09ddb2
--- /dev/null
+++ b/src/misc/deepcopy.ts
@@ -0,0 +1,3 @@
+export function deepcopy(x: any) {
+	return JSON.parse(JSON.stringify(x));
+}
diff --git a/src/models/abuse-user-report.ts b/src/models/abuse-user-report.ts
index f3900d348d..5a1530deb3 100644
--- a/src/models/abuse-user-report.ts
+++ b/src/models/abuse-user-report.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
 import { pack as packUser } from './user';
diff --git a/src/models/app.ts b/src/models/app.ts
index 45d50bccda..f46995ea2f 100644
--- a/src/models/app.ts
+++ b/src/models/app.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import AccessToken from './access-token';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
diff --git a/src/models/auth-session.ts b/src/models/auth-session.ts
index 428c707470..66454d732e 100644
--- a/src/models/auth-session.ts
+++ b/src/models/auth-session.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
 import { pack as packApp } from './app';
diff --git a/src/models/blocking.ts b/src/models/blocking.ts
index 4bdaa741e9..a8025c0ca7 100644
--- a/src/models/blocking.ts
+++ b/src/models/blocking.ts
@@ -1,7 +1,7 @@
 import * as mongo from 'mongodb';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import { pack as packUser, IUser } from './user';
 
 const Blocking = db.get<IBlocking>('blocking');
diff --git a/src/models/drive-file.ts b/src/models/drive-file.ts
index c31e9a709f..626ab4ce4f 100644
--- a/src/models/drive-file.ts
+++ b/src/models/drive-file.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import { pack as packFolder } from './drive-folder';
 import { pack as packUser } from './user';
 import monkDb, { nativeDbConn } from '../db/mongodb';
diff --git a/src/models/drive-folder.ts b/src/models/drive-folder.ts
index b0f6e4273e..f9d599950a 100644
--- a/src/models/drive-folder.ts
+++ b/src/models/drive-folder.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
 import DriveFile from './drive-file';
diff --git a/src/models/favorite.ts b/src/models/favorite.ts
index 2008edbfaf..a7504088fb 100644
--- a/src/models/favorite.ts
+++ b/src/models/favorite.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
 import { pack as packNote } from './note';
diff --git a/src/models/follow-request.ts b/src/models/follow-request.ts
index 4f75c63a32..8f7c2b0f60 100644
--- a/src/models/follow-request.ts
+++ b/src/models/follow-request.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
 import { pack as packUser } from './user';
diff --git a/src/models/games/reversi/game.ts b/src/models/games/reversi/game.ts
index 57c493cff5..22710424de 100644
--- a/src/models/games/reversi/game.ts
+++ b/src/models/games/reversi/game.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../../../misc/deepcopy';
 import db from '../../../db/mongodb';
 import isObjectId from '../../../misc/is-objectid';
 import { IUser, pack as packUser } from '../../user';
diff --git a/src/models/games/reversi/matching.ts b/src/models/games/reversi/matching.ts
index ba2ac1bc05..29a6f9a9ab 100644
--- a/src/models/games/reversi/matching.ts
+++ b/src/models/games/reversi/matching.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../../../misc/deepcopy';
 import db from '../../../db/mongodb';
 import isObjectId from '../../../misc/is-objectid';
 import { IUser, pack as packUser } from '../../user';
diff --git a/src/models/messaging-message.ts b/src/models/messaging-message.ts
index 67abb4d111..e5ffba68b3 100644
--- a/src/models/messaging-message.ts
+++ b/src/models/messaging-message.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import { pack as packUser } from './user';
 import { pack as packFile } from './drive-file';
 import db from '../db/mongodb';
diff --git a/src/models/mute.ts b/src/models/mute.ts
index 52775e13ca..317beaf0b8 100644
--- a/src/models/mute.ts
+++ b/src/models/mute.ts
@@ -1,7 +1,7 @@
 import * as mongo from 'mongodb';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import { pack as packUser, IUser } from './user';
 
 const Mute = db.get<IMute>('mute');
diff --git a/src/models/note-reaction.ts b/src/models/note-reaction.ts
index 4e449b400c..aaa0c48664 100644
--- a/src/models/note-reaction.ts
+++ b/src/models/note-reaction.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
 import Reaction from './note-reaction';
diff --git a/src/models/note.ts b/src/models/note.ts
index af45ff966d..4eab0dd6b4 100644
--- a/src/models/note.ts
+++ b/src/models/note.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import rap from '@prezzemolo/rap';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
diff --git a/src/models/notification.ts b/src/models/notification.ts
index 75456af57b..fc2b829cd3 100644
--- a/src/models/notification.ts
+++ b/src/models/notification.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
 import { IUser, pack as packUser } from './user';
diff --git a/src/models/signin.ts b/src/models/signin.ts
index d8b05c0e30..2739f214db 100644
--- a/src/models/signin.ts
+++ b/src/models/signin.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 
 const Signin = db.get<ISignin>('signin');
diff --git a/src/models/user-list.ts b/src/models/user-list.ts
index e7dd74bdd1..b67a6e130b 100644
--- a/src/models/user-list.ts
+++ b/src/models/user-list.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
 
diff --git a/src/models/user.ts b/src/models/user.ts
index 0c3f7b5508..f09cf294a4 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../misc/deepcopy';
 import rap from '@prezzemolo/rap';
 import db from '../db/mongodb';
 import isObjectId from '../misc/is-objectid';
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index 5f69329a4e..933f5671ad 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -25,7 +25,7 @@ import notesChart from '../../services/chart/notes';
 import perUserNotesChart from '../../services/chart/per-user-notes';
 import activeUsersChart from '../../services/chart/active-users';
 import instanceChart from '../../services/chart/instance';
-import * as deepcopy from 'deepcopy';
+import { deepcopy } from '../../misc/deepcopy';
 
 import { erase, concat } from '../../prelude/array';
 import insertNoteUnread from './unread';