# Prince of Persia — PrinceJS

Canonical: https://playable.wtf/games/oklemenz-princejs/

Project ID: project:oklemenz-princejs

Prince of Persia reimplemented in JavaScript with keyboard, gamepad and touch controls.

## About this version

Prince of Persia reimplemented in JavaScript with keyboard, gamepad and touch controls. Converted custom levels do not support special events.

Browser launch. Platformer.

[Play on creator site](https://princejs.com/)

## Quick start

1. Open PrinceJS and click Press to Start in the game area.
2. Use Space through the opening, then Enter to continue. Allow the brief dark transition to finish.
3. Once Level 1 appears, use the arrow keys. Start carefully: the ledge ends in a drop.

Controls: Arrow keys move; Up jumps or climbs and Down crouches or drops. Shift context actions are documented by the creator but were not checked here.

## Prince of Persia

Choose PrinceJS for browser and touch play, or SDLPoP for native practice tools and saves.

- [Read Prince of Persia guide](https://playable.wtf/guides/prince-of-persia-versions/)
- [Practice with native quicksaves](https://playable.wtf/games/nagyd-sdlpop/): SDLPoP adds exact-state saves and replays to a DOS-based native port.

[Browse all version comparisons](https://playable.wtf/families/)

## The original Prince of Persia

Jordan Mechner’s original Prince of Persia is a side-scrolling game about running, jumping and sword fighting. Its animation began with filmed human movement, giving the prince a particular sense of weight and commitment. Mechner first made it for the Apple II; PrinceJS follows the later MS-DOS version.

The appeal is in reading a room and executing the sequence it demands. A jump, a ledge grab and a sword exchange ask for different timing. It is a good fit for players who want a compact action puzzle rather than a platform game based only on constant forward speed.

Sources: [Jordan Mechner · Prince of Persia](https://www.jordanmechner.com/en/games-movies/prince-of-persia/) · [PrinceJS · controls, options and custom levels](https://github.com/oklemenz/PrinceJS)

## A browser adaptation with adjustable starting conditions

PrinceJS rebuilds the game in HTML5 and JavaScript. It includes keyboard, controller and touch input, plus links to converted custom level sets. The normal level range is 1–14; custom sets use other numbered routes. Conversions do not support special events, so a custom level is not necessarily identical to its original release.

Sources: [PrinceJS · controls, options and custom levels](https://github.com/oklemenz/PrinceJS)

## Learn movement and sword actions together

Use the arrow keys for movement, jumping, climbing and combat positioning. Shift handles actions including grabbing an edge and striking with the sword; Up blocks in combat, and Down sheathes the weapon. On a phone, use landscape and the documented touch regions: dragging between regions lets you chain a running jump into a grab.

Sources: [PrinceJS · controls, options and custom levels](https://github.com/oklemenz/PrinceJS)

## Keep the URL to keep your starting state

The address stores the level, maximum health, remaining time and guard strength. Bookmark that address to retain those settings. It is a level-and-settings handoff, not a promise to preserve every mid-room movement. You can also edit these parameters deliberately; lower guard strength offers a gentler way to learn sword timing without changing the basic controls.

Sources: [PrinceJS · controls, options and custom levels](https://github.com/oklemenz/PrinceJS)

## Do I need the original game files?

The documented hosted route opens directly in a browser without an original-file import step.

Creator-reported: [Project guide](https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md)

## How do I get started?

Open princejs.com. Use keyboard or controller on desktop, or the documented touch regions in landscape on mobile.

Creator-reported: [Project guide](https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md)

## Which devices and browsers work?

Desktop and mobile browser use are documented; the mobile guide recommends landscape mode.

Creator-reported: [Project guide](https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md)

## What are the controls?

Arrow keys move; Shift handles sword, potion and edge actions. The README also documents gamepad buttons and touch gestures.

Creator-reported: [Project guide](https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md)

## How do saves work?

Level, health, remaining time and difficulty are stored in URL parameters; preserve the URL to retain that state.

Creator-reported: [Project guide](https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md)

## What should I know before playing?

Converted custom levels do not support special events.

Creator-reported: [Project guide](https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md)

## Documented support

- Mobile: Supported · Creator-reported
- Controller: Supported · Creator-reported

## Credits and project

- [Original project](https://github.com/oklemenz/PrinceJS)
