Skip to main content

Overview

Monkeytype Premium enhances your typing experience with increased result storage, detailed activity tracking, and visual badges to show your support for the platform.
Premium features must be enabled server-wide by administrators. Check with your instance administrator to confirm availability.

Premium Benefits

1. Increased Result Limit

The most significant premium benefit is dramatically increased result storage.

Regular Users

1,000 resultsStandard result history for tracking your progress.

Premium Users

10,000 results10x more storage for comprehensive long-term analysis.
Technical Implementation: The limit is enforced in backend/src/api/controllers/result.ts:92-95:
From backend/src/constants/base-configuration.ts:20-22:
If you exceed your result limit, older results are not automatically deleted. However, you won’t be able to retrieve results beyond your limit. Consider exporting your data periodically.

2. Test Activity History Access

Premium users gain access to their complete test activity history, showing:
  • Daily test counts for the entire year
  • Historical test activity data by year
  • Visualization-ready data for activity heatmaps
API Endpoint:
From backend/src/api/controllers/user.ts:1238-1261:
Non-premium users can still see their current test activity (last 372 days) via GET /users/currentTestActivity. Premium unlocks the full historical data.

3. Premium Badge

Premium users receive a visible badge that:
  • Displays on leaderboards (when premium features are enabled)
  • Shows on your profile
  • Indicates your support for Monkeytype
Badge Visibility: The premium badge appears in:
  • Daily leaderboards
  • Weekly XP leaderboards
  • Public profiles
  • Friends lists
From backend/src/api/controllers/result.ts:512-513:
If premium features are disabled server-wide, the isPremium flag is removed from leaderboard entries to maintain privacy.

Premium Subscription Types

Premium subscriptions can be either time-limited or lifetime.

Time-Limited Premium

Subscriptions with an expiration date:
The system checks if the current time is before the expiration:

Lifetime Premium

Permanent premium status indicated by:
Lifetime premium never expires and provides all premium benefits indefinitely.

Checking Premium Status

You can verify your premium status through the user data endpoint:

Premium and Leaderboards

Premium status affects leaderboard display:

Weekly XP Leaderboard

From backend/src/services/weekly-xp-leaderboard.ts:204-206:
Premium badges are only shown when:
  1. Premium features are enabled server-wide
  2. The endpoint explicitly includes premium data

Daily Leaderboards

Similar logic applies to daily leaderboards. Premium status is included in the entry but may be filtered based on server configuration.

Result Retrieval Limits

When fetching results, the limit depends on your premium status: API Endpoint:
From backend/src/api/controllers/result.ts:97-117:
Even with premium, you cannot retrieve results beyond your limit in a single request. The maxBatchSize (typically 1000) controls how many results can be fetched at once. Use pagination with offset to retrieve all results.

Premium Feature Checks

The system performs two checks for premium features:
  1. Server-wide check: Are premium features enabled?
  2. User check: Does this user have an active premium subscription?
Both must be true for premium features to work.

Data Logging

Premium status is logged when results are requested:
This helps track premium feature usage and optimize server resources.

Technical Details

Database Schema

Premium information is stored in the user document:

Premium Check Aggregation

For MongoDB aggregation pipelines (used in friends leaderboards), premium status is calculated inline:

Frequently Asked Questions

  • You’ll revert to the 1,000 result limit
  • You’ll lose access to full test activity history
  • Your premium badge will be removed
  • Your existing results beyond 1,000 are not deleted, but cannot be retrieved via the API
Yes! You can view your current test activity (last 372 days) via:
Premium unlocks full historical data by year.
Use the results endpoint with pagination to export all your data:
Premium features may be disabled server-wide. Contact your instance administrator to enable them.