Turn anything into puzzles
Integrate Puzzl35 into your app with a simple URL redirect. No API keys required, no rate limits, completely free.
// Basic usage - just add an image parameter
https://puzzl35.com/?image=YOUR_IMAGE_URL
// Full example with all parameters
https://puzzl35.com/?image=https://example.com/photo.jpg&name=My+Puzzle&pieces=64&tags=nature,landscape&source=YourApp&source_url=https://yourapp.com
Try Live Demo
| Parameter | Type | Description |
|---|---|---|
image Required |
String | Image URL or base64 data URL. Supports JPG, PNG, GIF, WebP. |
name Optional |
String | Puzzle name (URL encoded). Default: empty |
pieces Optional |
Number | Number of pieces. Valid: 4, 9, 16, 25, 36, 49, 64, 81, 100, 144, 196, 256, 324, 400, 625, 900, 1024, 2048 |
tags Optional |
String | Comma-separated tags for searchability. Example: nature,landscape,ai |
source Optional |
String | Your app/company name for attribution badge |
source_url Optional |
String | Link back to your app (shown with source badge) |
<!-- Simple button to create a puzzle -->
<a href="https://puzzl35.com/?image=https://example.com/image.jpg&source=MyApp"
target="_blank">
🧩 Turn into Puzzle
</a>
function createPuzzle(imageUrl, name) {
const params = new URLSearchParams({
image: imageUrl,
name: name || 'My Puzzle',
pieces: '64',
tags: 'ai,generated',
source: 'YourApp',
source_url: 'https://yourapp.com'
});
window.open('https://puzzl35.com/?' + params.toString(), '_blank');
}
// Usage
createPuzzle('https://example.com/ai-art.png', 'AI Generated Art');
function PuzzleButton({ imageUrl, name }) {
const puzzleUrl = new URL('https://puzzl35.com/');
puzzleUrl.searchParams.set('image', imageUrl);
puzzleUrl.searchParams.set('name', name);
puzzleUrl.searchParams.set('source', 'MyReactApp');
return (
<a href={puzzleUrl.toString()} target="_blank" rel="noopener">
🧩 Create Puzzle
</a>
);
}
// For AI image generators that return base64
const base64Image = 'data:image/png;base64,iVBORw0KGgo...';
const params = new URLSearchParams({
image: base64Image, // Works with data URLs!
name: 'AI Creation',
tags: 'ai,midjourney,art'
});
window.open('https://puzzl35.com/?' + params);
Users are redirected to Puzzl35.com (not an iframe) for full features and Nostr login support.
Users can login with Nostr (NIP-07) or play anonymously. Their scores are saved to their profile.
Puzzles can be shared to "The Wild", commented on, and zapped with Bitcoin Lightning.
Every puzzle has a leaderboard. Compete for the fastest completion time!
Why redirect instead of iframe? NIP-07 browser extensions (Alby, nos2x) require direct page access to sign events. Iframes also have security restrictions that limit functionality.
When you include source and source_url parameters, a branded badge appears on the create screen showing where the image came from.
Puzzl35 is built on Nostr, the decentralized social protocol. Puzzles are stored as Nostr events:
| Kind | Purpose |
|---|---|
42069 |
Puzzle definition (image, name, grid size) |
42070 |
Completion record (time, verification hash) |
30078 |
User's puzzle library (cloud sync) |
1 |
Comments and share notes |
9735 |
Zap receipts (Lightning payments) |
Tags use standard Nostr t tags for discoverability. Query relays for kind:42069 to find puzzles!
Add a "Make Puzzle" button to let users play with their AI creations.
Turn photos into shareable puzzles with friends and family.
Create branded puzzles from product images for engagement.
Make daily puzzles from featured photos.
Embed puzzle minigames in your app.
Create educational puzzles from diagrams and maps.
Puzzl35 is open and free to use. For questions, feature requests, or partnerships, reach out on Nostr: