diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 47e1d4d93f..88673e804f 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -2151,6 +2151,9 @@ pages:
       _pick:
         arg1: "リスト"
         arg2: "位置"
+      listLen: "リストの長さを取得"
+      _listLen:
+        arg1: "リスト"
       number: "数値"
       stringToNumber: "テキストを数値に"
       _stringToNumber:
diff --git a/src/misc/aiscript/evaluator.ts b/src/misc/aiscript/evaluator.ts
index d93fcebcf7..f6165afb64 100644
--- a/src/misc/aiscript/evaluator.ts
+++ b/src/misc/aiscript/evaluator.ts
@@ -171,6 +171,7 @@ export class ASEvaluator {
 			numberToString: (a: number) => a.toString(),
 			splitStrByLine: (a: string) => a.split('\n'),
 			pick: (list: any[], i: number) => list[i - 1],
+			listLen: (list: any[]) => list.length,
 			random: (probability: number) => Math.floor(seedrandom(`${this.opts.randomSeed}:${block.id}`)() * 100) < probability,
 			rannum: (min: number, max: number) => min + Math.floor(seedrandom(`${this.opts.randomSeed}:${block.id}`)() * (max - min + 1)),
 			randomPick: (list: any[]) => list[Math.floor(seedrandom(`${this.opts.randomSeed}:${block.id}`)() * list.length)],
diff --git a/src/misc/aiscript/index.ts b/src/misc/aiscript/index.ts
index 8635399daa..3a21e9b1cc 100644
--- a/src/misc/aiscript/index.ts
+++ b/src/misc/aiscript/index.ts
@@ -74,6 +74,7 @@ export const funcDefs: Record<string, { in: any[]; out: any; category: string; i
 	numberToString:  { in: ['number'],                     out: 'string',      category: 'convert',    icon: faExchangeAlt, },
 	splitStrByLine:  { in: ['string'],                     out: 'stringArray', category: 'convert',    icon: faExchangeAlt, },
 	pick:            { in: [null, 'number'],               out: null,          category: 'list',       icon: faIndent, },
+	listLen:         { in: [null],                         out: 'number',      category: 'list',       icon: faIndent, },
 	rannum:          { in: ['number', 'number'],           out: 'number',      category: 'random',     icon: faDice, },
 	dailyRannum:     { in: ['number', 'number'],           out: 'number',      category: 'random',     icon: faDice, },
 	seedRannum:      { in: [null, 'number', 'number'],     out: 'number',      category: 'random',     icon: faDice, },