Bereal Profile Viewer Page

"I tried 'BeReal Viewer Pro' – after completing 3 surveys, it showed me a fake list of 6 names. I asked two of them if they’d viewed my profile, and both said they hadn’t opened BeReal in weeks." – u/anon_bereal

"The site asked for my phone number to 'verify.' Now I get 20 spam texts a day." – Trustpilot review for berealviewer.net

"I installed an APK from a TikTok link. My account posted crypto spam to all my friends 2 hours later." – r/Scams


Before we talk about viewers, we must first understand what BeReal actually shows you. As of the latest stable version of the BeReal app (updated bi-weekly), here is exactly what you can see regarding interactions:

Unlike Instagram, LinkedIn, or Twitter, BeReal was built on a specific psychological premise: No pressure. The founder, Alexis Barreyat, has stated in interviews that the "two-minute window" and the lack of vanity metrics were deliberate choices to fight social media addiction. bereal profile viewer

If BeReal introduced a profile viewer feature, it would immediately destroy the magic of the app. Consider the consequences:

BeReal’s philosophy is "Blind Browsing." You look at your friends' days because you like them, not because you want to leave a digital footprint.


If you want, I can:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BeReal Profile Viewer</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800;900&family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
<style>
  :root 
    --bg: #0a0a0a;
    --surface: #141414;
    --card: #1a1a1a;
    --border: #2a2a2a;
    --fg: #f5f5f0;
    --muted: #777;
    --accent: #e8e0d4;
    --accent2: #c4a882;
    --toast-bg: #222;
*  margin: 0; padding: 0; box-sizing: border-box;
body 
    font-family: 'Outfit', sans-serif;
    background: var(--bg);
    color: var(--fg);
    min-height: 100vh;
    overflow-x: hidden;
/* Subtle background texture */
  body::before 
    content: '';
    position: fixed;
    inset: 0;
    background:
      radial-gradient(ellipse 80% 60% at 50% 0%, rgba(196,168,130,0.06) 0%, transparent 60%),
      radial-gradient(ellipse 60% 50% at 80% 100%, rgba(196,168,130,0.03) 0%, transparent 50%);
    pointer-events: none;
    z-index: 0;
.phone-frame 
    width: 390px;
    max-width: 100vw;
    min-height: 100vh;
    margin: 0 auto;
    position: relative;
    z-index: 1;
    background: var(--surface);
    border-left: 1px solid var(--border);
    border-right: 1px solid var(--border);
@media (min-width: 768px) 
    body 
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 20px;
.phone-frame 
      min-height: 844px;
      max-height: 90vh;
      border-radius: 40px;
      border: 1px solid var(--border);
      box-shadow:
        0 0 0 4px #0a0a0a,
        0 40px 80px rgba(0,0,0,0.6),
        0 0 120px rgba(196,168,130,0.04);
      overflow: hidden;
.scroll-area 
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
.scroll-area::-webkit-scrollbar  display: none;
/* Story ring */
  .story-ring 
    background: conic-gradient(var(--accent2), #e8e0d4, var(--accent2));
    padding: 2.5px;
    border-radius: 50%;
    transition: transform 0.3s ease, opacity 0.3s ease;
.story-ring.viewed 
    background: var(--border);
    opacity: 0.6;
.story-ring:hover  transform: scale(1.05); 
  .story-ring-inner 
    background: var(--surface);
    padding: 2px;
    border-radius: 50%;
/* Bereal photo style */
  .bereal-post 
    position: relative;
    border-radius: 16px;
    overflow: hidden;
    cursor: pointer;
    transition: transform 0.3s ease;
.bereal-post:hover  transform: scale(1.01); 
  .bereal-post img 
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
.bereal-small 
    position: absolute;
    top: 12px;
    left: 12px;
    width: 80px;
    height: 80px;
    border-radius: 10px;
    overflow: hidden;
    border: 2px solid rgba(0,0,0,0.5);
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
    z-index: 2;
.bereal-small img  width: 100%; height: 100%; object-fit: cover; 
  .bereal-time 
    position: absolute;
    bottom: 12px;
    left: 12px;
    background: rgba(0,0,0,0.6);
    backdrop-filter: blur(10px);
    padding: 4px 10px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 500;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 4px;
.bereal-reactions 
    position: absolute;
    bottom: 12px;
    right: 12px;
    background: rgba(0,0,0,0.6);
    backdrop-filter: blur(10px);
    padding: 4px 10px;
    border-radius: 20px;
    font-size: 12px;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 4px;
/* Modal overlay */
  .modal-overlay 
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.92);
    z-index: 100;
    display: none;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(20px);
    animation: fadeIn 0.2s ease;
.modal-overlay.active  display: flex; 
  .modal-content 
    position: relative;
    max-width: 420px;
    width: 90%;
    animation: scaleIn 0.3s ease;
@keyframes fadeIn  from  opacity: 0;  to  opacity: 1;  
  @keyframes scaleIn  from  transform: scale(0.9); opacity: 0;  to  transform: scale(1); opacity: 1;  
  @keyframes slideUp  from  transform: translateY(20px); opacity: 0;  to  transform: translateY(0); opacity: 1;  
  @keyframes pulse  0%,100%  opacity: 1;  50%  opacity: 0.5;
.slide-up  animation: slideUp 0.4s ease forwards; 
  .slide-up-d1  animation-delay: 0.05s; opacity: 0; 
  .slide-up-d2  animation-delay: 0.1s; opacity: 0; 
  .slide-up-d3  animation-delay: 0.15s; opacity: 0; 
  .slide-up-d4  animation-delay: 0.2s; opacity: 0;
/* Tab indicator */
  .tab-btn 
    position: relative;
    padding: 12px 0;
    font-size: 14px;
    font-weight: 500;
    color: var(--muted);
    transition: color 0.3s;
    cursor: pointer;
    background: none;
    border: none;
    flex: 1;
    text-align: center;
.tab-btn.active  color: var(--fg); 
  .tab-btn.active::after 
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 24px;
    height: 2px;
    background: var(--fg);
    border-radius: 2px;
/* Toast */
  .toast 
    position: fixed;
    bottom: 100px;
    left: 50%;
    transform: translateX(-50%) translateY(20px);
    background: var(--toast-bg);
    color: var(--fg);
    padding: 10px 20px;
    border-radius: 24px;
    font-size: 13px;
    font-weight: 500;
    z-index: 200;
    opacity: 0;
    transition: all 0.3s ease;
    pointer-events: none;
    white-space: nowrap;
    border: 1px solid var(--border);
.toast.show 
    opacity: 1;
    transform: translateX(-50%) translateY(0);
/* Mutual badge */
  .mutual-badge 
    background: rgba(196,168,130,0.15);
    color: var(--accent2);
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 600;
/* Friend action button */
  .friend-action 
    background: var(--fg);
    color: var(--bg);
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    font-family: 'Outfit', sans-serif;
    transition: all 0.2s ease;
.friend-action:hover  transform: scale(1.03); 
  .friend-action:active  transform: scale(0.97); 
  .friend-action.added 
    background: transparent;
    color: var(--muted);
    border: 1px solid var(--border);
/* Floating nav */
  .bottom-nav 
    position: sticky;
    bottom: 0;
    background: rgba(20,20,20,0.85);
    backdrop-filter: blur(20px);
    border-top: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-around;
    padding: 10px 0 20px;
    z-index: 50;
.nav-item 
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    color: var(--muted);
    font-size: 10px;
    cursor: pointer;
    transition: color 0.2s;
    background: none;
    border: none;
    font-family: 'Outfit', sans-serif;
.nav-item.active  color: var(--fg); 
  .nav-item i  font-size: 20px;
/* Realmoji */
  .realmoji 
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.3);
    object-fit: cover;
    cursor: pointer;
    transition: transform 0.2s;
.realmoji:hover  transform: scale(1.15);
/* Search bar */
  .search-bar 
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 10px 14px;
    display: flex;
    align-items: center;
    gap: 10px;
    transition: border-color 0.2s;
.search-bar:focus-within  border-color: var(--accent2); 
  .search-bar input 
    background: none;
    border: none;
    outline: none;
    color: var(--fg);
    font-family: 'Outfit', sans-serif;
    font-size: 14px;
    width: 100%;
.search-bar input::placeholder  color: var(--muted);
.user-card 
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 16px;
    cursor: pointer;
    border-radius: 12px;
    transition: background 0.2s;
.user-card:hover  background: rgba(255,255,255,0.03);
.avatar 
    width: 44px;
    height: 44px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
.avatar-sm 
    width: 32px;
    height: 32px;
    border-radius: 50%;
    object-fit: cover;
/* Story viewer */
  .story-viewer 
    position: fixed;
    inset: 0;
    z-index: 150;
    background: #000;
    display: none;
    flex-direction: column;
.story-viewer.active  display: flex; 
  .story-progress 
    display: flex;
    gap: 3px;
    padding: 8px 12px;
    position: absolute;
    top: 12px;
    left: 12px;
    right: 12px;
    z-index: 5;
.story-progress-bar 
    flex: 1;
    height: 2px;
    background: rgba(255,255,255,0.3);
    border-radius: 2px;
    overflow: hidden;
.story-progress-fill 
    height: 100%;
    background: #fff;
    border-radius: 2px;
    width: 0%;
    transition: width 0.05s linear;
/* Loading shimmer */
  .shimmer 
    background: linear-gradient(90deg, var(--card) 25%, #222 50%, var(--card) 75%);
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
@keyframes shimmer  0%  background-position: 200% 0;  100%  background-position: -200% 0;
@media (prefers-reduced-motion: reduce) 
    *, *::before, *::after 
      animation-duration: 0.01ms !important;
      transition-duration: 0.01ms !important;
</style>
</head>
<body>
<div class="phone-frame" id="app">
  <!-- Screens rendered by JS -->
</div>
<!-- Post detail modal -->
<div class="modal-overlay" id="postModal">
  <div class="modal-content" id="postModalContent"></div>
</div>
<!-- Story viewer -->
<div class="story-viewer" id="storyViewer">
  <div class="story-progress" id="storyProgress"></div>
  <div style="position:absolute;top:24px;left:16px;right:16px;z-index:5;display:flex;align-items:center;gap:10px;">
    <img id="storyAvatar" class="avatar-sm" src="" alt="">
    <span id="storyName" style="font-weight:600;font-size:14px;"></span>
    <span id="storyTime" style="color:rgba(255,255,255,0.5);font-size:12px;"></span>
    <button onclick="closeStory()" style="margin-left:auto;background:none;border:none;color:white;font-size:24px;cursor:pointer;" aria-label="Close story">
      <i class="fas fa-times"></i>
    </button>
  </div>
  <div style="flex:1;display:flex;align-items:center;justify-content:center;position:relative;" id="storyImageContainer">
    <img id="storyImage" style="width:100%;height:100%;object-fit:contain;" src="" alt="">
  </div>
  <div style="position:absolute;bottom:30px;left:16px;right:16px;z-index:5;">
    <div style="background:rgba(255,255,255,0.1);border-radius:24px;padding:8px 14px;display:flex;align-items:center;gap:8px;">
      <input type="text" placeholder="Send a message..." style="flex:1;background:none;border:none;outline:none;color:white;font-family:'Outfit';font-size:13px;" aria-label="Reply to story">
      <i class="far fa-paper-plane" style="color:rgba(255,255,255,0.5);cursor:pointer;"></i>
    </div>
  </div>
</div>
<!-- Toast -->
<div class="toast" id="toast"></div>
<script>
// ─── Simulated Data ───
const profiles = [
id: 1,
    username: 'lucas.martin',
    displayName: 'Lucas Martin',
    avatar: 'https://picsum.photos/seed/lucas01/200/200.jpg',
    bio: 'Paris / Photography / Late night coder',
    mutualFriends: 12,
    isAdded: false,
    isViewed: true,
    postsCount: 47,
    friendsCount: 234,
    stories: [
       image: 'https://picsum.photos/seed/lucas-s1/600/900.jpg', time: '2h ago' ,
       image: 'https://picsum.photos/seed/lucas-s2/600/900.jpg', time: '1h ago' ,
    ],
    posts: [
main: 'https://picsum.photos/seed/lucas-p1/600/800.jpg',
        selfie: 'https://picsum.photos/seed/lucas-self1/200/200.jpg',
        time: '2:34 PM',
        date: 'Today',
        realmojis: [
           avatar: 'https://picsum.photos/seed/rm1/60/60.jpg', emoji: '' ,
           avatar: 'https://picsum.photos/seed/rm2/60/60.jpg', emoji: '' ,
           avatar: 'https://picsum.photos/seed/rm3/60/60.jpg', emoji: '' ,
        ],
        comments: 4
      ,
main: 'https://picsum.photos/seed/lucas-p2/600/800.jpg',
        selfie: 'https://picsum.photos/seed/lucas-self2/200/200.jpg',
        time: '11:02 AM',
        date: 'Yesterday',
        realmojis: [
           avatar: 'https://picsum.photos/seed/rm4/60/60.jpg', emoji: '' ,
        ],
        comments: 1
      ,
main: 'https://picsum.photos/seed/lucas-p3/600/800.jpg',
        selfie: 'https://picsum.photos/seed/lucas-self3/200/200.jpg',
        time: '8:47 PM',
        date: '2 days ago',
        realmojis: [
           avatar: 'https://picsum.photos/seed/rm5/60/60.jpg', emoji: '' ,
           avatar: 'https://picsum.photos/seed/rm6/60/60.jpg', emoji: '' ,
        ],
        comments: 2
]
  ,
id: 2,
    username: 'emma.chen',
    displayName: 'Emma Chen',
    avatar: 'https://picsum.photos/seed/emma02/200/200.jpg',
    bio: 'NYC / Design / matcha addict',
    mutualFriends: 8,
    isAdded: true,
    isViewed: false,
    postsCount: 83,
    friendsCount: 412,
    stories: [
       image: 'https://picsum.photos/seed/emma-s1/600/900.jpg', time: '45m ago' ,
    ],
    posts: [
main: 'https://picsum.photos/seed/emma-p1/600/800.jpg',
        selfie: 'https://picsum.photos/seed/emma-self1/200/200.jpg',
        time: '3:12 PM',
        date: 'Today',
        realmojis: [
           avatar: 'https://picsum.photos/seed/rm7/60/60.jpg', emoji: '' ,
           avatar: 'https://picsum.photos/seed/rm8/60/60.jpg', emoji: '' ,
           avatar: 'https://picsum.photos/seed/rm9/60/60.jpg', emoji: '' ,
           avatar: 'https://picsum.photos/seed/rm10/60/60.jpg', emoji: '' ,
        ],
        comments: 7
      ,
main: 'https://picsum.photos/seed/emma-p2/600/800.jpg',
        selfie: 'https://picsum.photos/seed/emma-self2/200/200.jpg',
        time: '2:34 PM',
        date: 'Yesterday',
        realmojis: [
           avatar: 'https://picsum.photos/seed/rm11/60/60.jpg', emoji: '' ,
           avatar: 'https://picsum.photos/seed/rm12/60/60.jpg', emoji: '' ,
        ],
        comments: 3
]
  ,
id: 3,
    username: 'marco.rivera',
    displayName: 'Marco Rivera',
    avatar: 'https://picsum.photos/seed/marco03/200/200.jpg',
    bio: 'Barcelona / Surf / Good vibes only',
    mutualFriends: 3,
    isAdded: false,
    isViewed: false,
    postsCount: 21,
    friendsCount: 89,
    stories: [],
    posts: [
main: 'https://picsum.photos/seed/marco-p1/600/800.jpg',
        selfie: 'https://picsum.photos/seed/marco-self1/200/200.jpg',
        time: '9:15 PM',
        date: 'Today',
        realmojis: [
           avatar: 'https://picsum.photos/seed/rm13/60/60.jpg', emoji: '' ,
        ],
        comments: 0
]
  ,
  {
    id: 4,
    username: 'sofia.larsson',
    displayName: 'Sofia Larsson',
    avatar: 'https://picsum.photos/seed/sofia04/200/200.jpg',
    bio: 'Stockholm / Architecture / Coffee enthusiast',
    mutualFriends: 15,
    isAdded: true,
    isViewed: true,
    postsCount: 112,
    friendsCount: 567,
    stories: [
       image: 'https://picsum.photos/seed/sofia-s1/600/900.jpg', time: '3h ago' ,
       image: 'https://picsum.photos/seed/sofia-s2/600/900.jpg', time: '2h ago' ,
       image: 'https://picsum.photos/seed/sofia-s3/600/900.jpg', time: '1h ago' ,
    ],
    posts: [
      {
        main: 'https://picsum.photos/seed/sofia-p1/600/800.jpg',
        selfie: 'https://picsum.photos/seed/sofia-self1/200/200.jpg',
        time: '4:45 PM',
        date: 'Today',
        realmojis: [
           avatar: 'https://picsum.photos/seed/rm14/60/60.jpg', emoji: '' ,
           avatar: 'https://picsum.photos/seed/rm15/60/60.jpg', emoji: '' ,
          { avatar: 'https://picsum.photos/seed/rm16/

Market Report: BeReal Profile Viewer Tools "I tried 'BeReal Viewer Pro' – after completing

Date: October 26, 2023 Subject: Analysis of Third-Party "BeReal Profile Viewer" Tools, Risks, and Technical Feasibility.

Let me repeat that for the people in the back: BeReal does not notify users of screenshots. This is a massive point of confusion because Snapchat built its empire on screenshot detection. BeReal is not Snapchat. If your friend screenshots your double-chin breakfast photo, you will never know.

Because there is no view counter or screenshot detector, the demand for a "profile viewer" is based on a feature that simply does not exist in the app’s code.


Q: Does BeReal notify you when you view a profile? A: No. You can look at anyone's profile picture, bio, and past BeReals (if they are your friend) without them ever receiving an alert. "The site asked for my phone number to 'verify

Q: Is there a BeReal Plus version that shows viewers? A: No. BeReal does not have a "Plus" or premium tier. Any app claiming to be "BeReal Gold" or "BeReal Pro" is a scam.

Q: Can I see who viewed my BeReal if I post outside the 2-minute window? A: No. Whether you post on time or late, the privacy settings remain identical. No viewer list exists.

Q: My friend says they have a profile viewer app that works. Are they lying? A: They are either lying, or they have been scammed into downloading malware and are seeing fake data generated by the app to trick them.

Q: Will BeReal ever add this feature? A: It is highly unlikely. The CEO has repeatedly emphasized that reducing social anxiety is the core mission of the app. Viewer counts create anxiety. Therefore, they will likely never be added.

Post your BeReal late. Wait until the 24-hour period is almost over. Then, look at who added RealMojis to your post. Generally speaking, the people who interact with your BeReal (emojis/comments) are your most engaged followers. If they are interacting, they are certainly viewing your profile. This is the closest thing to a "viewer" list that exists natively.

Shopping Cart