diff --git a/docs/docs/utils/common/parseJson.md b/docs/docs/utils/common/parseJson.md
new file mode 100644
index 000000000..32ba42ce1
--- /dev/null
+++ b/docs/docs/utils/common/parseJson.md
@@ -0,0 +1,23 @@
+# parseJson
+
+일반적으로 JSON.parse를 사용하는 경우 일부 input값(ex. 빈 문자열, undefined, NaN)에 대해서는 에러를 반환합니다. 이 함수를 사용하면 에러를 반환하는 값에 대해서는 null을 반환하여 파싱 시의 예상치 못한 에러를 방지할 수 있습니다.
+
+
+
+## Interface
+```tsx
+const parseJson: (value: any) => T | null
+```
+
+## Usage
+```ts
+import { parseJson } from '@modern-kit/utils';
+
+type NormalObject = { a: 1, b: 2 }
+
+const normalObject = parseJSON(`{ "a": 1, "b": 2 }`); // { a: 1, b: 2 } | null
+const emptyString = parseJSON<''>(''); // '' | null
+const nullValue = parseJSON(null); // null
+const undefinedValue = parseJSON(undefined); // undefined | null
+const NaNValue = parseJSON(NaN); // number | null
+```
\ No newline at end of file
diff --git a/packages/utils/src/common/parseJson/index.ts b/packages/utils/src/common/parseJson/index.ts
new file mode 100644
index 000000000..54306d6e4
--- /dev/null
+++ b/packages/utils/src/common/parseJson/index.ts
@@ -0,0 +1,16 @@
+export const parseJSON = (value: any): T | null => {
+ if (typeof value !== 'string') {
+ return value as T;
+ }
+
+ if (value === '') {
+ return '' as T;
+ }
+
+ try {
+ return JSON.parse(value) as T;
+ } catch {
+ console.error(`데이터를 파싱하는 데에 실패했습니다. 원본: ${value}`);
+ return null;
+ }
+};
diff --git a/packages/utils/src/common/parseJson/parseJson.spec.ts b/packages/utils/src/common/parseJson/parseJson.spec.ts
new file mode 100644
index 000000000..631f971a0
--- /dev/null
+++ b/packages/utils/src/common/parseJson/parseJson.spec.ts
@@ -0,0 +1,62 @@
+import { parseJSON } from '.';
+
+type Test1 = { a: 1; b: 2 };
+type Test2 = {
+ a: 1;
+ b: [2, 3, { c: 4 }];
+ d: { e: 5; f: 6 };
+};
+type Test3 = ['foo', { bar: 'baz' }];
+
+describe('parseJSON', () => {
+ it('should return original value for falsy value', () => {
+ const falseValue = parseJSON(false);
+ const zeroNumberValue = parseJSON<0>(0);
+ const emptyStringValue = parseJSON<''>('');
+ const nullValue = parseJSON(null);
+ const undefinedValue = parseJSON(undefined);
+ const NaNValue = parseJSON(NaN);
+
+ expect(falseValue).toBe(false);
+ expect(zeroNumberValue).toBe(0);
+ expect(emptyStringValue).toBe('');
+ expect(nullValue).toBeNull();
+ expect(undefinedValue).toBeUndefined();
+ expect(NaNValue).toBeNaN();
+ });
+
+ it('should correctly parse stringified value', () => {
+ const result = parseJSON(`{ "a": 1, "b": 2 }`);
+
+ expect(result).toEqual({ a: 1, b: 2 });
+ });
+
+ it('should correctly parse complex JSON objects', () => {
+ const complexJson = `{
+ "a": 1,
+ "b": [2, 3, {"c": 4}],
+ "d": {"e": 5, "f": 6}
+ }`;
+ const result = parseJSON(complexJson);
+
+ expect(result).toEqual({
+ a: 1,
+ b: [2, 3, { c: 4 }],
+ d: { e: 5, f: 6 },
+ });
+ });
+
+ it('should correctly parse JSON arrays', () => {
+ const jsonArray = `["foo", {"bar": "baz"}]`;
+ const result = parseJSON(jsonArray);
+
+ expect(result).toEqual(['foo', { bar: 'baz' }]);
+ });
+
+ it('should return null for incorrect JSON format', () => {
+ const incorrectJson = `{a: 1, b: 2}`;
+ const result = parseJSON(incorrectJson);
+
+ expect(result).toBeNull();
+ });
+});