Overview
Monkeytype’s social features allow you to connect with other typists, track their progress, and compete on exclusive friends-only leaderboards. Build your typing community and see how you stack up against your connections.Managing Connections
Sending Friend Requests
You can have a maximum of 100 connections per user. If you reach this limit, you’ll need to remove existing connections before adding new ones.
Accepting or Rejecting Requests
When you receive a friend request, you have three options:Accept
Accept the request to add them to your friends list. Both users will be able to see each other on friends-only leaderboards.
Reject
Decline the request without blocking. They can send another request in the future.
Block
Block the user to prevent future connection requests from them.
Viewing Your Connections
You can filter your connections by status and type:- Status:
pending,accepted,blocked - Type:
incoming(requests you received),outgoing(requests you sent)
backend/src/api/controllers/connections.ts:21 supports these filters:
Removing Connections
To remove a friend or cancel a pending request:You can delete connections you initiated (pending or accepted) or connections where you are the receiver.
Friends-Only Leaderboards
Weekly XP Leaderboard
Once you have accepted connections, you can view a friends-only version of the Weekly XP Leaderboard. This shows:- Your rank among friends
- Your global rank (if not opted out)
- Total XP earned this week
- Time spent typing
- The system aggregates results from all your accepted connections
- Each friend’s XP and typing time is displayed
- Rankings update in real-time as you and your friends type
The friends leaderboard is implemented using MongoDB aggregation pipelines in
backend/src/dal/connections.ts:220 via the aggregateWithAcceptedConnections function.Viewing Friends’ Profiles
Access your friends’ profiles to see:- Personal bests (15s, 30s, 60s, 120s time modes and 10, 25, 50, 100 word modes)
- Typing statistics (completed tests, time typing)
- Current streak and max streak
- XP and badges
- Test activity (if they have public activity enabled)
Connection States
Connections can be in one of three states:| State | Description | Actions Available |
|---|---|---|
pending | Request sent but not yet accepted | Cancel (initiator), Accept/Reject/Block (receiver) |
accepted | Active friendship | Remove connection |
blocked | User blocked | Remove block |
Privacy Considerations
- Premium status is only visible on leaderboards if premium features are enabled server-wide
- Users who opt out of leaderboards won’t appear on friends leaderboards
- Profile visibility settings control what information friends can see
Technical Details
Connection Key System
The backend uses a unique key system to prevent duplicate connections:Name Updates
When you change your username, the system automatically updates your name in all connections:Troubleshooting
Why can't I send a friend request?
Why can't I send a friend request?
- You may have reached the maximum of 100 connections
- A connection (pending, accepted, or blocked) may already exist
- The user may have blocked you
- You may be trying to add yourself
My friend isn't showing on the leaderboard
My friend isn't showing on the leaderboard
- Ensure the connection status is “accepted”
- Your friend must have earned XP this week
- Your friend may have opted out of leaderboards
- Your friend may be banned
How do I see who sent me friend requests?
How do I see who sent me friend requests?
Use the connections endpoint with filters: