{"id":356773,"date":"2026-09-09T22:04:49","date_gmt":"2026-09-09T22:04:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/instastash\/"},"modified":"2026-09-09T22:20:02","modified_gmt":"2026-09-09T22:20:02","slug":"nostalgie","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/nostalgie\/","author":23554720,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.5","stable_tag":"1.4.5","tested":"7.1","requires":"6.3","requires_php":"8.0","requires_plugins":null,"header_name":"Nostalgie","header_author":"Derek Muico","header_description":"Import your Instagram data export into WordPress with posts, captions, dates and emoji intact, and every media file kept private on your own site.","assets_banners_color":"cab5a7","last_updated":"2026-09-09 22:20:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/nostalgie.io","header_author_uri":"https:\/\/route395.us","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.5":{"tag":"1.4.5","author":"dekuderek","date":"2026-09-09 22:20:02","revision":3689064}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3689079,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3689079,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3689054,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3689054,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"nostalgie\/media":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"nostalgie\/media","version":"0.14.1-48","title":"Nostalgie Media","category":"media","icon":"format-gallery","description":"Show media from your imported Instagram archive: a whole post or carousel, or just some of its items. Pick it visually; no ids to look up.","keywords":["instagram","nostalgie","media","carousel"],"textdomain":"nostalgie","attributes":{"id":{"type":"string","default":""},"post":{"type":"string","default":""},"account":{"type":"string","default":""},"layout":{"type":"string","default":"carousel"},"size":{"type":"string","default":""},"width":{"type":"string","default":""},"height":{"type":"string","default":""},"aspect":{"type":"string","default":""},"scale":{"type":"string","default":""},"alt":{"type":"string","default":""},"autoplay":{"type":"boolean","default":false},"muted":{"type":"boolean","default":false},"loop":{"type":"boolean","default":false},"controls":{"type":"boolean","default":true}},"supports":{"html":false,"align":["left","center","right","wide","full"]},"editorScript":"file:.\/index.js"}},"tagged_versions":["1.4.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3689054,"resolution":"1","location":"assets","locale":"","width":1140,"height":814},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3689054,"resolution":"2","location":"assets","locale":"","width":1024,"height":768},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3689054,"resolution":"3","location":"assets","locale":"","width":1024,"height":768}},"screenshots":{"1":"Imported photos and videos in the Media Library, filtered to your Nostalgie import (video thumbnails via ffmpeg).","2":"Picking and sizing imported media with the Nostalgie Media block, right in the editor.","3":"The Accounts screen after an import: post\/file counts and per-account media access."}},"plugin_section":[],"plugin_tags":[1445,210,87,311,84],"plugin_category":[50,56,59],"plugin_contributors":[280008],"plugin_business_model":[],"class_list":["post-356773","plugin","type-plugin","status-publish","hentry","plugin_tags-archive","plugin_tags-gallery","plugin_tags-import","plugin_tags-instagram","plugin_tags-media","plugin_category-media","plugin_category-social-and-sharing","plugin_category-utilities-and-tools","plugin_contributors-dekuderek","plugin_committers-dekuderek"],"banners":{"banner":"https:\/\/ps.w.org\/nostalgie\/assets\/banner-772x250.png?rev=3689054","banner_2x":"https:\/\/ps.w.org\/nostalgie\/assets\/banner-1544x500.png?rev=3689054","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/nostalgie\/assets\/icon-128x128.png?rev=3689079","icon_2x":"https:\/\/ps.w.org\/nostalgie\/assets\/icon-256x256.png?rev=3689079","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/nostalgie\/assets\/screenshot-1.png?rev=3689054","caption":"Imported photos and videos in the Media Library, filtered to your Nostalgie import (video thumbnails via ffmpeg)."},{"src":"https:\/\/ps.w.org\/nostalgie\/assets\/screenshot-2.png?rev=3689054","caption":"Picking and sizing imported media with the Nostalgie Media block, right in the editor."},{"src":"https:\/\/ps.w.org\/nostalgie\/assets\/screenshot-3.png?rev=3689054","caption":"The Accounts screen after an import: post\/file counts and per-account media access."}],"raw_content":"<!--section=description-->\n<p>Nostalgie is not affiliated with, endorsed by, or sponsored by Instagram or Meta.<\/p>\n\n<p>Instagram will hand you your entire history as a ZIP file, a perfect keepsake\nyou can't actually look at. Nostalgie unpacks that download onto your own\nWordPress site so you can finally use it.<\/p>\n\n<p>Your posts and carousels are imported with their original dates, captions,\nhashtags and emoji, and every media file is stored <strong>privately<\/strong>: Nostalgie\nwrites a deny rule over its own uploads folder, so the files are not publicly\naddressable. They reach a browser only through a protected endpoint that checks\npermission first, and only on the pages you choose to put them on.<\/p>\n\n<p><strong>Your export stays the master copy.<\/strong> Nostalgie reads it and never changes it.\nImports are safe to repeat: duplicates are detected and skipped, and anything\nyou've organised afterwards is preserved. You can clear everything and rebuild\nfrom your ZIP at any time.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Imports posts, carousels and archived posts<\/strong> from the official Instagram\ndata export, either through WP-CLI or a browser importer that batches its work\nso large archives don't time out.<\/li>\n<li><strong>Keeps the details right.<\/strong> Original timestamps (posts are backdated to when\nyou posted them), captions with full emoji fidelity, hashtags, and the place\nname you tagged when posting.<\/li>\n<li><strong>Protects your media.<\/strong> Files are denied at the web-server level and served\nonly through a permission-checked endpoint with proper range support, so video\nscrubbing and browser caching still work.<\/li>\n<li><strong>Displays anywhere.<\/strong> Drop a photo, video or a whole carousel into any page\nor post with the <code>[nostalgie]<\/code> block or shortcode. Media is addressed by\nstable Instagram ids, so your embeds keep working even after you clear and\nre-import.<\/li>\n<li><strong>Pick media by looking at it.<\/strong> The block opens your imported archive and\nlets you search it by caption, hashtag or tagged place, so you never have to\nknow a filename. The Media Library gives your imports their own filter\n(images, videos, carousels, stories, archived) and offers a ready-to-paste\nblock for any single file.<\/li>\n<li><strong>Says what an import will store, before it runs.<\/strong> Both the Import button\nand the WP-CLI command show what will land on your server, who will be able\nto see it, and what looking after it means for you.<\/li>\n<li><strong>Works with AI assistants.<\/strong> Nostalgie registers a WordPress ability, so an\nassistant connected to your site can find a post by what you wrote, the\nhashtags you used, or the place you tagged, and hand back the exact block to\npaste in. Read-only, and limited to users who can already edit posts.<\/li>\n<li><strong>Generates video cover images<\/strong> with ffmpeg when your host provides it, and\ndegrades gracefully when it doesn't.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>Nostalgie does <strong>not<\/strong> connect to Instagram, log in to anything, or sync live\ndata. It reads the export file you downloaded yourself. The free edition makes\nno outbound network requests at all, so nothing about your archive leaves your\nserver.<\/p>\n\n<h4>Nostalgie Pro<\/h4>\n\n<p>A paid edition makes your archive searchable. It imports the deeper parts of the\nexport (stories, comments and direct messages) and adds a gallery app on your own\ndomain where you can search all of it, put your photos on a map, and browse by\nhashtag or by what you posted on this day in earlier years. Every account is\nprivate unless you say otherwise, several accounts can live on one site, and\nanything you do choose to make public gets a shareable embed. The free edition\ndescribed here is complete in itself: nothing above is disabled or time-limited.<\/p>\n\n<h4>Not affiliated with Instagram<\/h4>\n\n<p>Nostalgie is an independent project. It is not affiliated with, endorsed by, or\nsponsored by Instagram or Meta Platforms, Inc. \"Instagram\" is used only to\ndescribe the data-export format this plugin reads.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/nostalgie\/<\/code>, or install it through\nthe WordPress <strong>Plugins<\/strong> screen.<\/li>\n<li>Activate it. Activation creates the database tables and writes the deny rule\nthat keeps your imported media private.<\/li>\n<li>Request your data export from Instagram (<strong>Settings \u2192 Accounts Centre \u2192 Your\ninformation and permissions \u2192 Download your information<\/strong>). Choose <strong>JSON<\/strong>\nformat. Nostalgie cannot read the HTML export.<\/li>\n<li>Go to <strong>Nostalgie \u2192 Import<\/strong> in your admin and upload the ZIP, or run\n   wp nostalgie import \/path\/to\/export.zip if you prefer WP-CLI.<\/li>\n<li>Add media to a page with the <strong>Nostalgie Media<\/strong> block, or the\n   [nostalgie post=\"...\"] shortcode.<\/li>\n<\/ol>\n\n<p><strong>nginx users:<\/strong> the automatic deny rule is an Apache <code>.htaccess<\/code> file. On nginx,\nadd the equivalent <code>location<\/code> block shown on the plugin's Diagnostics screen,\notherwise your imported files stay publicly reachable.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20connect%20to%20instagram%3F\"><h3>Does this connect to Instagram?<\/h3><\/dt>\n<dd><p>No. It reads the export ZIP you download from Instagram yourself. It never logs\nin, scrapes, or syncs. Your archive is as current as your most recent export.<\/p><\/dd>\n<dt id=\"is%20my%20imported%20media%20private%3F\"><h3>Is my imported media private?<\/h3><\/dt>\n<dd><p>Yes, by default. Nostalgie stores media in its own uploads folder and writes a\nweb-server rule denying direct access to it. Files are served only through a\npermission-checked endpoint, and only for the pages where you've placed them.\nMedia you have not put on a page is not reachable from the web at all.<\/p><\/dd>\n<dt id=\"can%20i%20run%20the%20import%20more%20than%20once%3F\"><h3>Can I run the import more than once?<\/h3><\/dt>\n<dd><p>Yes, that's the intended workflow. Already-imported posts are detected and\nskipped, so re-running with a newer export only adds what's new. Changes you've\nmade afterwards are preserved.<\/p><\/dd>\n<dt id=\"which%20export%20format%20do%20i%20need%3F\"><h3>Which export format do I need?<\/h3><\/dt>\n<dd><p><strong>JSON<\/strong>, not HTML. When you request your download from Instagram, choose JSON\nas the format. Pick the date range and media quality you want, and Nostalgie\nreads whatever the ZIP contains.<\/p><\/dd>\n<dt id=\"do%20i%20need%20ffmpeg%3F\"><h3>Do I need ffmpeg?<\/h3><\/dt>\n<dd><p>No. If your host has ffmpeg, Nostalgie extracts a cover frame for each video.\nWithout it, videos import normally and simply show the standard media icon.<\/p><\/dd>\n<dt id=\"what%20does%20the%20ai%20integration%20actually%20do%3F\"><h3>What does the AI integration actually do?<\/h3><\/dt>\n<dd><p>It publishes a single read-only lookup that answers \"which imported post is\nthis?\" It searches your captions, hashtags and tagged place names, returning\nthe post's id plus a ready-to-paste block. It sends nothing anywhere and needs no\nAPI key. The assistant is whatever you've connected to your own site. It requires\nWordPress 6.9 or newer and is simply absent on older versions.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20a%20page%20cache%3F\"><h3>Does it work with a page cache?<\/h3><\/dt>\n<dd><p>Media URLs are time-limited, so a full-page cache can serve an expired one and\nthe media will fail to load until the cache refreshes. Exclude pages containing\nNostalgie media from full-page caching.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.5<\/h4>\n\n<ul>\n<li>Fix: media set to a fixed size keeps that size inside a carousel.<\/li>\n<li>Change: the admin notices and info popovers are written in plain English.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fix: the \"ffmpeg is not installed\" notice under the thumbnail-fill button sits on its own line.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Security: guard plugin files against direct access.<\/li>\n<li>New: a site-wide setting to disallow embedding your posts on other sites.<\/li>\n<li>New: video posters are generated in the browser on hosts without ffmpeg installed.<\/li>\n<li>Fix: the media block carousel's previous and next buttons now move reliably between items.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>New: the media block's carousel has previous and next buttons for moving between items, and its scrollbar is hidden.<\/li>\n<li>Fix: creating or updating the database tables no longer logs a database error about a text column's default value.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: search now ranks results by relevance and finds a post by its tagged place name.<\/li>\n<li>New: limit an import to a range of months, using the date filter in the import options.<\/li>\n<li>New: the \"wp nostalgie set-owner\" command assigns an imported account to a WordPress user.<\/li>\n<li>Change: imported media is now organized into a per-account subfolder.<\/li>\n<li>Hardening: stronger input sanitizing and output escaping throughout.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix: in the free edition, the block's carousel toggle is now hidden\nrather than shown disabled.<\/li>\n<li>Passes the official WordPress Plugin Check tool with no warnings.<\/li>\n<\/ul>","raw_excerpt":"Bring your Instagram data export into WordPress with posts, captions, dates and emoji intact, and every file kept private on your own site.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/356773","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=356773"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dekuderek"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=356773"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=356773"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=356773"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=356773"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=356773"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=356773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}