Her first IRL solo show is on view at Postmasters Gallery in New York.
Taylor Dafoe, May 17, 2022
The metaverse is a lofty, nebulous concept. It’s also a violet-colored storefront on Franklin Street in New York. 
At least that’s the idea behind Olive Allen’s new exhibition at Postmasters Gallery, which purports to recreate the Web3 world within the white cube. The title doubles as an ominous invitation: ​​”Welcome to the Metaverse.”
A collection of new NFTs comprises most of the show’s offerings, ranging from collaged digital paintings to an animation of a lush virtual landscape to several artist-designed avatars. The latter bunch scan as send-up of Bored Apes, CryptoPunks, and other collectible characters. One features a Furby decked out in streetwear, another a bull-bear hybrid with market chart arrows on its belly. They look inane, and that’s the point.
With its cheap, roller-rink lighting and glitchy soundtrack, Allen’s exhibition doesn’t actually capture the essence of the metaverse—at least not the utopian vision peddled by Mark Zuckerberg and other tech evangelists. But it does get at some of the affects we associate with the word in 2022: ‘90s nostalgia, corporate co-optation, video-game aesthetics, venomous reply-guy vibes. 
Installation view, Olive Allen, “Welcome to the Metaverse,” Postmasters Gallery, 2022. Photo: Emma Schwartz. Courtesy of Postmasters Gallery.
The show marks the first solo outing for Allen, a young NFT pioneer who appears poised to do what few of her crypto-art contemporaries have done: establish a foothold in the traditional art world. A pixel-thin thread runs between the two registers of her work: one a sincere belief in the promises of blockchain, the other a sardonic critique of the culture that’s risen around it. Whether or not they found it IRL or via URL, audiences have taken note. 
Olive doesn’t go into the NFT space with wide-open eyes and innocent fascination. There’s a criticality to her work,” said Postmasters cofounder Magda Sawon of the newest addition to her roster, which has embraced digital art since the late 1980s and includes such trailblazers as Eva and Franco Mattes and Kevin and Jennifer and Kevin McCoy. “There’s a strong understanding of what lies underneath it all, of the pitfalls and dangers that we see with Web 2.0 and the complete corporate takeover of that space.”
Olive Allen, No-Return Journey (2022). Courtesy of Postmasters.
Born in Russia, Allen immigrated to the U.S. after turning 18 roughly a dozen years ago. First she came Los Angeles, where she says she learned English by going to parties and made money by modeling on the side. Then came New York, and with it, a greater sense of hustle. Rent, she explained, was often paid by “flipping Supreme merch” online. To do that, she mastered fashion’s strategies for manufacturing hype—gimmicks she would later exploit in her art practice. 
It was around this time, too, that Allen began making digital artworks on a tablet, slowly ingratiating herself into the then-nascent communities forming around crypto art. She founded her own NFT marketplace and social platform, called Decadent, and moved to San Francisco to get the startup off the ground. 
Installation view, Olive Allen, “Welcome to the Metaverse,” Postmasters Gallery, 2022. Photo: Emma Schwartz. Courtesy of Postmasters Gallery.
Decadent did not flourish, but in its failure came other lasting contributions to the NFT culture. On Halloween 2019, Allen released “13 Dreadful and Disappointing Items,” a series of collectible NFT figures that looked as though they should be sold at Hot Topic: a neon-green alien, a voodoo doll, a “meanie” Beanie Baby. Decadent’s site crashed as the tokens went live, but with the project, the artist introduced the idea of the “drop”—a promotion tool borrowed from fashion in which limited quantities of product are introduced in a short window of time—to the NFT world.
“I’ve always been fascinated by those techniques, utilized by streetwear brands,” Allen said in an interview for SuperRare. “I understand the mechanics of it. You buy and you flip. It’s an adrenaline rush. Achievement unlocked.”
The crypto community’s ears pricked up, particularly the founders of Nifty Gateway, Duncan and Griffin Cock Foster, who consulted with Allen as their own NFT platform—now a mainstay in the space—took shape, she said. Allen was included in the site’s second-ever drop in 2020, for which she contributed several “UnBearables,” a series of teddy bear collectibles battling distinctly modern problems: one is covered in crude oil, another is deemed nonessential by Amazon. 
Olive Allen burning her Russian passport in front of the Russian embassy in New York. Photo: NFT Now.
Like sports cards, her NFTs were offered up in “sealed” packs; buyers had no idea which “UnBearables” they were going to get. Gamifying the release was both a marketing ploy and a means of subverting the market around her work. The series promptly sold out. 
Since then, Allen’s work has been auctioned at Christie’s and on SuperRare; she was included in König Galerie’s exhibition “THE ARTIST IS ONLINE,” and a piece of hers became the first NFT sold at an art fair, at Art Basel in 2021. Earlier this year, Allen made headlines when she burned her Russian passport to protest her home country’s invasion of Ukraine. She minted a video of the act as NFT, auctioned it off for 3.66 ETH (about $7,500), and donated the proceeds to help Ukrainian children affected by the war.
“If any artist from the crypto/NFT space deserves a huge show right now, it’s her,” said Sawon. “The vision is there.”
Olive Allen: Welcome to the Metaverse” is on view now through May 28 at Postmasters Gallery, 54 Franklin Street, New York, NY 10013. 

By William Van Meter, May 19, 2022
By Kenny Schachter, Mar 3, 2022
By Dorian Batycka, Mar 1, 2022
By Christine Ajudua, May 17, 2022
By Sarah Cascone, May 17, 2022
©2022 Artnet Worldwide Corporation. All Rights Reserved.var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
pagetype = document.querySelector(‘meta[property=”og:type”]’).getAttribute(“content”),
pagetypeurl = document.URL,
pagetypeforce = pagetypeurl.substr(pagetypeurl.length – 3);
isnewsletter = pagetypeurl.includes(“?page_1”);
w = pagetype + 20 * Math.round(w / 20), h = pagetype + 20 * Math.round(h / 20), googletag.cmd.push(function() {
googletag.pubads().setTargeting(“width”, w), googletag.pubads().setTargeting(“height”, h), 1 == isnewsletter && googletag.pubads().setTargeting(“isfirstpage”, [‘Y’, pagetypeforce] )
(function defernl() {
if (window.jQuery) {
if (jQuery(window).width() > 619) {
setTimeout(function() {

var cookieSettings = {
recentlyShown: {
expiration_minutes: 5
signedUp: {
expiration_days: 14
closedSignupBar: {
expiration_days: 5

var generalSettings = {
loadFontAwesome: false

if (!window.jQuery) loadJQuery();
var $ = window.jQuery;

function addCss(fileName) {
var head = document.head
, link = document.createElement(‘link’);

link.type = ‘text/css’;
link.rel = ‘stylesheet’;
link.href = fileName;


function appendNewsletterSignup() {
var signup =

+ ‘



var paywallPagesRegex = /^/subscribe|subscribe-confirm|my-account(/|$)/;

function initNewsletterSignup() {
// don’t show it on paywall-related pages where the user might be in the process
// of subscribing, or managing their account
if (paywallPagesRegex.test(window.location.pathname)) {

// Append ouibounce to page
var ouibounceScript = ”;

// Add animation css

if (generalSettings.loadFontAwesome) {

// Check if ouibounce exist before calling ouibounce
var initOuibounce = setInterval(function() {
if (typeof ouibounce !== ‘undefined’) {

var $modal = $(‘#ouibounce-modal’);
SignupForm.init($modal.find(‘form’), function onSuccess() {
//hide form fields and show thank-you message

setNewsletterCookie(‘signedUp’, 1);

//after successful signup, hide the signup bar after 5 seconds
setTimeout(function() {
}, 5000);

// Handler for close signup button
$(‘body’).on( ‘click’, ‘.close-signup’, function(){
setNewsletterCookie(‘closedSignupBar’, 1);

ouibounceAPIaccess = ouibounce(
$modal[0], {
aggressive: true,
sensitivity: 50,
callback: function() {

}, 100);

function slideInModal(upOrDown) {
.removeClass(‘slideOutDown slideOutUp’)
.addClass( ‘slideIn’ + upOrDown );

setNewsletterCookie(‘recentlyShown’, 1);

function setNewsletterCookie(cookieName, value) {
var settings = cookieSettings[cookieName];
var expirationMinutes = settings.expiration_minutes;
if (!expirationMinutes) {
expirationMinutes = daysToMinutes(settings.expiration_days);
setCookie(cookieName, value, expirationMinutes);

function daysToMinutes(numDays) {
return numDays * 24 * 60;

* Generic setCookie() method, used by setNewsletterCookie().
* There is probably no need to call this directly – use setNewsletterCookie().
function setCookie(cname, cvalue, expMinutes, prefix) {
//default prefix is ‘artnet_newsletter_’
if (prefix == undefined) {
prefix = ‘artnet_newsletter_’;
var d = new Date();
d.setTime(d.getTime() + (expMinutes*60*1000));
var expires = “expires=”+d.toUTCString();

//console.log(prefix + cname + “=” + cvalue + “;” + expires + “;path=/”);
document.cookie = prefix + cname + “=” + cvalue + “;” + expires + “;path=/”;

function getCookie(cname, prefix) {
//default prefix is ‘artnet_newsletter_’
if (prefix == undefined) {
prefix = ‘artnet_newsletter_’;
var name = prefix + cname + “=”;
var ca = document.cookie.split(‘;’);
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') {
c = c.substring(1);
if (c.indexOf(name) == 0) {
return c.substring(name.length,c.length);
return "";

function closeSignupBar() {
var $modal = $('#ouibounce-modal');
$modal.addClass( $modal.hasClass('slideInUp') ? 'slideOutDown': 'slideOutUp' );

function loadJQuery() {
var script = document.createElement('script');
script.src = "https://code.jquery.com/jquery-3.1.1.min.js";
script.integrity = "sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=";
script.crossorigin = "anonymous";

function checkCookies() {
//if any of these cookies are found, we don't show the modal.
var cookieNames = ['recentlyShown', 'signedUp', 'closedSignupBar','signup_cookie'];
var i = cookieNames.length,
found = false;
while (i–) {
if (getCookie(cookieNames[i]).length) {
found = true;

if (!found) {

var SignupForm = {
regex: {
email: /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

// Init – Anything you want to happen onLoad (usually event bindings)
// ——————————————————————-
init: function (formElement, onSuccess) {
var ctx = this;
if (!onSuccess) {
throw Error('onSuccess callback is required');

var $form = $(formElement);

var $email = $form.find('.signup-email');
var valid = ctx.validate( $form, $email);
// Hide the errors
// Submit the form
ctx.submit($form, onSuccess);
} else {
// Focus on the email input box
// Show email validation error and hide other errors

// ===================================================================

// Signup validation
// ——————————————————————-
validate: function( $form, $email ){
var ctx = this;
// Does the email match our regex?
return ctx.regex.email.test( $email.val() );

// Signup submission
// ——————————————————————-
submit: function($form, onSuccess) {
var ctx = this;
type: $form.attr('method'),
url: $form.attr('action'),
data: JSON.stringify( $form.serializeFormJSON() ),
// dataType: 'json',
contentType: 'application/json; charset=UTF-8',
crossDomain: true,
timeout: 10000
.done(function(data, textStatus, jqXHR) {
.fail(function(jqXHR, textStatus){
// Show signup failure error and hide other errors

// Extends jQuery with a function to serialize to JSON
// ——————————————————————-
customSerializer: function(){
$.fn.serializeFormJSON = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
return o;

//show automatically after delay
var $modal = $('#ouibounce-modal');
//if there are cookies indicating that we shouldn't show the signup bar, then the modal won't have been added to the page
//and we can just return here.
if (!$modal.length) {
//don't run this function if the user has already triggered the modal by leaving the viewport
if ($modal.hasClass('slideInDown')) return;

//position at bottom of screen
top: 'auto',
bottom: 0


},20000); //20 seconds

$(function() {

}, 7500);
} else {
setTimeout(function() { defernl() }, 250);