Repository Analysis

monkeytypegame/monkeytype

The most customizable typing website with a minimalistic design and a ton of features. Test yourself in various modes, track your progress and improve your speed.

0.1 Likely human-written View on GitHub
0.1
Adjusted Score
0.1
Raw Score
100%
Time Factor
2026-05-30
Last Push
20,107
Stars
TypeScript
Language
1,750,870
Lines of Code
1765
Files
193
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 4HIGH 0MEDIUM 3LOW 186

Pattern Findings

193 matches across 10 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers120 hits · 122 pts
SeverityFileLineSnippet
LOWfrontend/storybook/.storybook/main.ts44function patchAnimatedModalToNotThrow(): Plugin {
LOWfrontend/storybook/.storybook/main.ts86 export function updateAccountChartButtons() {}
LOWfrontend/storybook/.storybook/main.ts106function stubVirtualLanguageHashes(): Plugin {
LOWfrontend/static/quotes/code_python.json353 "text": "def combinations_with_replacement(iterable, r):\n\t# combinations_with_replacement('ABC', 2) --> AA AB AC
LOWfrontend/static/quotes/code_python.json359 "text": "def combinations_with_replacement(iterable, r):\n\tpool = tuple(iterable)\n\tn = len(pool)\n\tfor indices
LOWfrontend/static/challenges/sourcecode.txt3129async function updateLeaderboardAndNotifyChanges(leaderboardTime) {
LOWfrontend/static/challenges/sourcecode.txt20793export function isSingleListCommandLineActive() {
LOWfrontend/static/challenges/sourcecode.txt21041function generateSingleListOfCommands() {
LOWfrontend/static/challenges/sourcecode.txt24215export function setCurrentWordElementIndex(val) {
LOWfrontend/static/challenges/sourcecode.txt24894export function arrangeCharactersRightToLeft() {
LOWfrontend/static/challenges/sourcecode.txt24900export function arrangeCharactersLeftToRight() {
LOWfrontend/static/challenges/sourcecode.txt27244export function incrementIncompleteSeconds(val) {
LOWfrontend/static/challenges/sourcecode.txt27383export function setKeypressTimingsTooLong() {
LOWfrontend/src/ts/firebase.ts115export async function signInWithEmailAndPassword(
LOWfrontend/src/ts/firebase.ts178export async function createUserWithEmailAndPassword(
LOWfrontend/src/ts/test/timer-progress.ts118function setTimerHtmlToInputLength(el: HTMLElement, wrapInDiv: boolean): void {
LOWfrontend/src/ts/test/words-generator.ts313async function applyEnglishPunctuationToWord(word: string): Promise<string> {
LOWfrontend/src/ts/test/words-generator.ts372async function applyBritishEnglishToWord(
LOWfrontend/src/ts/test/custom-text.ts202export function getCustomTextLongProgress(name: string): number {
LOWfrontend/src/ts/test/custom-text.ts209export function setCustomTextLongProgress(
LOWfrontend/src/ts/test/result.ts1209function updateResultChartDataVisibility(): void {
LOWfrontend/src/ts/test/test-logic.ts109export async function syncNotSignedInLastResult(uid: string): Promise<void> {
LOWfrontend/src/ts/test/caps-warning.ts7function updateCapsWarningVisibility(): void {
LOWfrontend/src/ts/test/test-ui.ts101export function keepWordsInputInTheCenter(force = false): void {
LOWfrontend/src/ts/test/test-ui.ts1580export function highlightAllLettersAsCorrect(wordIndex: number): void {
LOWfrontend/src/ts/test/test-ui.ts1681function showHideTestRestartButton(showHide: boolean): void {
LOWfrontend/src/ts/test/test-ui.ts1689export function getActiveWordTopAndHeightWithDifferentData(data: string): {
LOWfrontend/src/ts/test/test-ui.ts1776export function afterTestCompositionUpdate(): void {
LOWfrontend/src/ts/test/english-punctuation.ts70function shouldWholeReplacementWordBeCapitalised(
LOWfrontend/src/ts/test/funbox/list.ts60export function getActiveFunboxesWithProperty(
LOWfrontend/src/ts/test/funbox/list.ts72export function findSingleActiveFunboxWithProperty(
LOWfrontend/src/ts/test/funbox/list.ts88export function isFunboxActiveWithProperty(property: FunboxProperty): boolean {
LOWfrontend/src/ts/test/funbox/list.ts128export function isFunboxActiveWithFunction(
LOWfrontend/src/ts/test/events/data.ts247export function logEventsDataToTheConsole(): void {
LOWfrontend/src/ts/test/events/data.ts267export function logEventsDataToTheConsoleTable(): void {
LOWfrontend/src/ts/test/events/stats.ts56export function getStartToFirstKeypressMs(): number {
LOWfrontend/src/ts/test/events/stats.ts92function getRawLastKeypressToEndMs(): number {
LOWfrontend/src/ts/config/validation.ts38export function isConfigValueValidBoolean(key: string, val: boolean): boolean {
LOWfrontend/src/ts/config/funbox-validation.ts4export function canSetConfigWithCurrentFunboxes(
LOWfrontend/src/ts/config/persistence.ts41export function saveFullConfigToLocalStorage(noDbCheck = false): void {
LOWfrontend/src/ts/input/state.ts23export function incrementIncorrectShiftsInARow(): void {
LOWfrontend/src/ts/input/state.ts27export function resetIncorrectShiftsInARow(): void {
LOWfrontend/src/ts/input/state.ts47export function getLastInsertCompositionTextData(): string {
LOWfrontend/src/ts/input/state.ts51export function setLastInsertCompositionTextData(value: string): void {
LOWfrontend/src/ts/input/input-element.ts15export function appendToInputElementValue(value: string): void {
LOWfrontend/src/ts/input/input-element.ts29export function moveInputElementCaretToTheEnd(): void {
LOWfrontend/src/ts/input/input-element.ts33export function replaceInputElementLastValueChar(char: string): void {
LOWfrontend/src/ts/input/hotkeys/utils.ts44function isInteractiveElementFocused(): boolean {
LOWfrontend/src/ts/input/hotkeys/utils.ts58function handleHotkeyOnInteractiveElement(
LOWfrontend/src/ts/input/handlers/insert-text.ts302function normalizeDataAndUpdateInputIfNeeded(
LOWfrontend/src/ts/input/helpers/validation.ts54export function shouldInsertSpaceCharacter(options: {
LOWfrontend/src/ts/input/helpers/fail-or-finish.ts11export function checkIfFailedDueToMinBurst(options: {
LOWfrontend/src/ts/input/helpers/fail-or-finish.ts43export function checkIfFailedDueToDifficulty(options: {
LOWfrontend/src/ts/modals/simple-modals.ts67function getPreferredAuthenticationMethod(
LOWfrontend/src/ts/modals/simple-modals.ts78function isUsingPasswordAuthentication(): boolean {
LOWfrontend/src/ts/modals/simple-modals.ts82function isUsingGithubAuthentication(): boolean {
LOWfrontend/src/ts/modals/simple-modals.ts86function isUsingGoogleAuthentication(): boolean {
LOWfrontend/src/ts/utils/strings.ts70export function capitalizeFirstLetterOfEachWord(str: string): string {
LOWfrontend/src/ts/utils/strings.ts316export function areCharactersVisuallyEqual(
LOWfrontend/src/ts/utils/strings.ts395export function replaceUnderscoresWithSpaces(text: string): string {
60 more matches not shown…
Over-Commented Block52 hits · 44 pts
SeverityFileLineSnippet
LOWfrontend/storybook/stories/UserProfile.stories.tsx121 // 3,
LOWfrontend/__tests__/test/events/helpers.spec.ts161 // const events = [
LOWfrontend/static/challenges/sourcecode.txt901 approved: false,
LOWfrontend/static/challenges/sourcecode.txt2481 // if (result.timestamp > Math.round(Date.now() / 1000) * 1000 + 10) {
LOWfrontend/static/challenges/sourcecode.txt3541// return false;
LOWfrontend/static/challenges/sourcecode.txt3561// // language: result.language,
LOWfrontend/static/challenges/sourcecode.txt3581// if (pbs[result.mode][result.mode2] === undefined) {
LOWfrontend/static/challenges/sourcecode.txt3601// //no pb
LOWfrontend/static/challenges/sourcecode.txt3621// }
LOWfrontend/static/challenges/sourcecode.txt3641// // User.findOne({ uid: userdata.uid }, (err, user) => {
LOWfrontend/static/challenges/sourcecode.txt9341 // Get the action to complete.
LOWfrontend/static/challenges/sourcecode.txt11441
LOWfrontend/static/challenges/sourcecode.txt16841 gap: 0.5rem;
LOWfrontend/static/challenges/sourcecode.txt17041 // }
LOWfrontend/static/challenges/sourcecode.txt17881 // margin-top: 6px;
LOWfrontend/static/challenges/sourcecode.txt17901 // div#KeyU.keymap-key,
LOWfrontend/static/challenges/sourcecode.txt17921 // div#KeyLeftBracket.keymap-key,
LOWfrontend/static/challenges/sourcecode.txt17941 // div#KeyM.keymap-key {
LOWfrontend/static/challenges/sourcecode.txt18881 ret = colors[color];
LOWfrontend/static/challenges/sourcecode.txt18901 // async function check() {
LOWfrontend/static/challenges/sourcecode.txt19941 if ($target.attr("tab") == "preset") {
LOWfrontend/static/challenges/sourcecode.txt19981 ".pageSettings .section.themes .tabContainer .customTheme input[type=color]"
LOWfrontend/static/challenges/sourcecode.txt20001 // document.documentElement.style.setProperty($colorVar, $pickedColor);
LOWfrontend/static/challenges/sourcecode.txt21241 // setTheme(Config.theme, true);
LOWfrontend/static/challenges/sourcecode.txt21261// }
LOWfrontend/static/challenges/sourcecode.txt26781 // $("#top .config .wordCount").removeClass("hidden");
LOWfrontend/static/challenges/sourcecode.txt26801 // $("#top .config .wordCount").addClass("hidden");
LOWfrontend/static/themes/shadow.css41#typingTest .word letter.correct,
LOWfrontend/static/themes/rainbow_trail.css41#saveScreenshotButton:hover > i,
LOWfrontend/src/styles/popups.scss161 // height: 2.25rem;
LOWfrontend/src/styles/popups.scss181 // }
LOWfrontend/src/styles/test.scss921 transition: opacity 0.125s;
LOWfrontend/src/styles/test.scss1041 align-items: center;
LOWfrontend/src/styles/test.scss1121 // // grid-area: infoAndTags;
LOWfrontend/src/styles/keymap.scss101 display: grid;
LOWfrontend/src/ts/sentry.ts21 release: envConfig.clientVersion,
LOWfrontend/src/ts/sentry.ts81 return event;
LOWfrontend/src/ts/test/test-logic.ts981
LOWfrontend/src/ts/test/test-logic.ts1001 // val2 = {
LOWfrontend/src/ts/test/test-ui.ts701 // // we need to update word letters for that word
LOWfrontend/src/ts/modals/last-signed-out-result.ts41 //safe because we check if it exists before showing the modal
LOWfrontend/src/ts/controllers/eg-ad-controller.ts61 // if (
LOWfrontend/src/ts/controllers/pw-ad-controller.ts241 await ramp.displayUnits();
LOWfrontend/src/ts/controllers/pw-ad-controller.ts261// });
LOWbackend/__tests__/api/controllers/result.spec.ts761 });
LOWbackend/src/api/controllers/result.ts341 );
LOWpackages/release/src/buildChangelog.js1import { exec } from "child_process";
LOWpackages/release/src/buildChangelog.js181
LOWpackages/release/src/buildChangelog.js201// }
LOWpackages/release/src/buildChangelog.js221
LOWpackages/release/src/buildChangelog.js301 // "d2739e4f193137db4d86450f0d50b3489d75c106 d2739e4f1 docs: add new feature (#1234)",
LOW.github/workflows/claude.yml41 # This is an optional setting that allows Claude to read CI results on PRs
Hallucination Indicators4 hits · 40 pts
SeverityFileLineSnippet
CRITICALfrontend/static/challenges/sourcecode.txt26099 ChartController.result.options.annotation.annotations.push({
CRITICALfrontend/static/challenges/sourcecode.txt26145 ChartController.result.options.annotation.annotations.push({
CRITICALfrontend/static/challenges/sourcecode.txt26422 ChartController.result.options.annotation.annotations.push({
CRITICALfrontend/src/ts/components/ui/form/FieldIndicator.tsx32 text={props.field.state.meta.errors.join(", ")}
Verbosity Indicators4 hits · 6 pts
SeverityFileLineSnippet
LOWfrontend/src/ts/controllers/pw-ad-controller.ts10// Step 1: Create the Ramp Object, NOTE: selector id needed for tagged units only
LOWfrontend/src/ts/controllers/pw-ad-controller.ts142 // Step 2: Creates the Ramp Scripts
LOWpackages/schemas/src/shared.ts61// // Step 1: Define the schema for specific string values "10" and "25"
LOWpackages/schemas/src/shared.ts64// // Step 2: Use this schema as the key schema for another object
Overly Generic Function Names5 hits · 5 pts
SeverityFileLineSnippet
LOW…tend/__tests__/elements/test-activity-calendar.spec.ts1219function getData(from: string, to: string): number[] {
LOWfrontend/src/ts/test/custom-text.ts130export function getData(): CustomTextSettings {
LOW…src/ts/elements/account-settings/blocked-user-table.ts13async function getData(): Promise<boolean> {
LOW…tend/src/ts/elements/account-settings/ape-key-table.ts177async function getData(): Promise<boolean> {
LOWfrontend/src/ts/legacy-states/composition.ts18export function getData(): string {
Self-Referential Comments2 hits · 4 pts
SeverityFileLineSnippet
MEDIUMfrontend/static/quotes/code_ruby.json17 "text": "class MegaGreeter\n\tattr_accessor :names\n\n\t# Create the object\n\tdef initialize(names = \"World\")\n
MEDIUMfrontend/static/quotes/code_bash.json53 "text": "#!/bin/bash\n\n# Create a new directory\nNEW_DIR=\"/path/to/new_directory\"\nmkdir -p \"$NEW_DIR\"\necho
Redundant / Tautological Comments2 hits · 2 pts
SeverityFileLineSnippet
LOWfrontend/static/quotes/code_bash.json23 "text": "#!/bin/bash\n\n# Check if a file exists\nFILE=\"/path/to/file.txt\"\nif [ -f \"$FILE\" ]; then\n echo \"
LOWpackages/release/bin/deployBackend.sh17# Print the output
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippet
LOWfrontend/static/quotes/code_arduino.json311 "text": "void setup() {\n\tSerial.begin(9600);\n\twhile (!Serial) {\n\t\t;\n\t}\n\tSerial.println(\"\n\nString ind
LOWfrontend/static/quotes/code_arduino.json311 "text": "void setup() {\n\tSerial.begin(9600);\n\twhile (!Serial) {\n\t\t;\n\t}\n\tSerial.println(\"\n\nString ind
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippet
MEDIUMfrontend/static/quotes/code_arduino.json449 "text": "#include <LiquidCrystal.h>\nLiquidCrystal lcd(12, 11, 5, 4, 3, 2);\nconst int switchPin = 6;\nint switchS
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippet
LOWfrontend/static/languages/typing_of_the_dead.json4374 "Don't forget to wear your wig",