Bootstrap snippet and html example. Bootstrap 5 chat app frame avatar placeholder

Bootstrap 5.2.0 snippet "Bootstrap 5 chat app frame avatar placeholder" with HTML, CSS, and JS. Copy, paste, and customize this responsive UI component for your project.

HTML code

Clean, semantic HTML that powers this Bootstrap 5.2.0 snippet. Copy and paste it into your page (with Bootstrap loaded) to reproduce the exact layout shown in the preview.

<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <!-- CSS only -->
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-12 my-3">
            <h1>Bootstrap 5 chat app</h1>
            <hr>
            Support my work @ MMLTech | <a href="https://ko-fi.com/mmltech" target="_blank"><i class="fas fa-coffee"></i> Buy me a coffee</a> | <a href="https://streampollmaster.comt">Streampollmaster</a> | <a href="https://obscountdown.com">OBSCountdown</a>
            <hr>
        </div>
    </div>
    <div id="ChatBox">
        <div class="row">
            <div class="col-md-4">
                <div class="sidebar h-100">
                    <form>
                        <div class="form-group">
                            <div class="input-group mb-3">
                                <span class="input-group-text" id="basic-addon1"><i class="fas fa-search"></i></span>
                                <input type="text" class="form-control" placeholder="Search user" aria-label="Search user" aria-describedby="basic-addon1">
                            </div>
                        </div>
                    </form>
                    <hr>
                    <ul class="users-list">
                        <li class="user-profile d-flex align-items-center">
                            <div class="user-avatar me-3">
                                <img src="https://plhold.com/avatar/60?text=john+doe" alt="" />
                            </div>
                            <div class="d-flex flex-column">
                                <strong class="user-name">John Doe</strong>
                                <span class="status">
                                <i class="fas fa-circle text-success"></i>
                                Online
                            </span>
                            </div>
                        </li>
                        <li class="user-profile d-flex align-items-center active">
                            <div class="user-avatar me-3">
                                <img src="https://plhold.com/avatar/60?text=Angelien+Austėja+Rakes" alt="" />
                            </div>
                            <div class="d-flex flex-column">
                                <strong class="user-name">Angelien Austėja Rakes</strong>
                                <span class="status">
                                <i class="fas fa-circle text-danger"></i>
                                Last seen 1 day ago
                            </span>
                            </div>
                        </li>
                        <li class="user-profile d-flex align-items-center">
                            <div class="user-avatar me-3">
                                <img src="https://plhold.com/avatar/60?text=Temuri+Naja+Rigby" alt="" />
                            </div>
                            <div class="d-flex flex-column">
                                <strong class="user-name">Temuri Naja Rigby</strong>
                                <span class="status">
                                <i class="fas fa-circle text-warning"></i>
                                Away
                            </span>
                            </div>
                        </li>
                        <li class="user-profile d-flex align-items-center">
                            <div class="user-avatar me-3">
                                <img src="https://plhold.com/avatar/60?text=Izem+Estela+McAfee" alt="" />
                            </div>
                            <div class="d-flex flex-column">
                                <strong class="user-name">Izem Estela McAfee</strong>
                                <span class="status">
                                <i class="fas fa-circle text-info"></i>
                                Do Not Disturb
                            </span>
                            </div>
                        </li>
                        <li class="user-profile d-flex align-items-center">
                            <div class="user-avatar me-3">
                                <img src="https://plhold.com/avatar/60?text=Luz+Ruža+Whittle" alt="" />
                            </div>
                            <div class="d-flex flex-column">
                                <strong class="user-name">Luz Ruža Whittle</strong>
                                <span class="status">
                                <i class="fas fa-circle text-success"></i>
                                Online
                            </span>
                            </div>
                        </li>
                        <li class="user-profile d-flex align-items-center">
                            <div class="user-avatar me-3">
                                <img src="https://plhold.com/avatar/60?text=Govinda+Coriander+Ármannsson" alt="" />
                            </div>
                            <div class="d-flex flex-column">
                                <strong class="user-name">Govinda Coriander Ármannsson</strong>
                                <span class="status">
                                <i class="fas fa-circle text-success"></i>
                                Online
                            </span>
                            </div>
                        </li>
                        <li class="user-profile d-flex align-items-center">
                            <div class="user-avatar me-3">
                                <img src="https://plhold.com/avatar/60?text=Shikha+Dionisia+Sarkissian" alt="" />
                            </div>
                            <div class="d-flex flex-column">
                                <strong class="user-name">Shikha Dionisia Sarkissian</strong>
                                <span class="status">
                                <i class="fas fa-circle text-success"></i>
                                Online
                            </span>
                            </div>
                        </li>
                    </ul>
                </div>
            </div>
            <div class="col-md-8">
                <div class="chat-frame d-flex flex-column justify-content-between">
                    <div class="action-frame d-flex align-items-center">
                        <div class="user-avatar me-3">
                            <img src="https://plhold.com/avatar/60?text=Angelien+Austėja+Rakes" alt="" />
                        </div>
                        <div class="d-flex flex-column">
                            <strong class="user-name">Angelien Austėja Rakes</strong>
                            <span class="status">
                                <i class="fas fa-circle text-danger"></i>
                                Last seen 1 day ago
                            </span>
                        </div>
                        <div class="action-buttons d-flex ms-auto">
                            <button class="btn btn-outline-secondary me-2"><i class="fas fa-camera"></i></button>
                            <button class="btn btn-outline-info me-2"><i class="fas fa-image"></i></button>
                            <button class="btn btn-outline-primary me-2"><i class="fas fa-cogs"></i></button>
                            <div class="dropstart">
                                <button class="btn btn-outline-success dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
                                    <i class="fas fa-ellipsis-v"></i>
                                </button>
                                <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
                                    <li><a class="dropdown-item" href="#">Block</a></li>
                                    <li><a class="dropdown-item" href="#">Ignore</a></li>
                                    <li><a class="dropdown-item" href="#">Remove friend</a></li>
                                </ul>
                            </div>
                        </div>
                    </div>
                    <div class="message-history py-3">
                        <div class="message-line d-flex flex-column">
                            <div class="d-flex justify-content-end mb-3">
                                <div class="user-avatar">
                                    <img src="https://plhold.com/avatar/60?text=Angelien+Austėja+Rakes" alt="" />
                                </div>
                            </div>
                            <p class="message ms-auto">
                                Lorem ipsum dolor sit amet, consectetur adipiscing elit.
                                <small class="date d-flex justify-content-start mt-3">11 Nov 2022 13:00</small>
                            </p>
                        </div>
                        <div class="message-line reply d-flex flex-column">
                            <div class="d-flex align-items-end mb-3">
                                <div class="user-avatar">
                                    <img src="https://plhold.com/avatar/60?text=Shikha+Dionisia+Sarkissian" alt="" />
                                </div>
                            </div>
                            <p class="message">
                                Lorem ipsum dolor sit amet, consectetur adipiscing elit.
                                <small class="date d-flex justify-content-end mt-3">11 Nov 2022 13:00</small>
                            </p>
                        </div>
                        <div class="message-line reply d-flex flex-column">
                            <div class="d-flex align-items-end mb-3">
                                <div class="user-avatar">
                                    <img src="https://plhold.com/avatar/60?text=Shikha+Dionisia+Sarkissian" alt="" />
                                </div>
                            </div>
                            <p class="message">
                                Lorem ipsum dolor sit amet, consectetur adipiscing elit.
                                <small class="date d-flex justify-content-end mt-3">11 Nov 2022 13:00</small>
                            </p>
                        </div>
                    </div>
                    <div class="inputs mt-auto">
                        <div class="input-group mb-3">
                            <input type="text" class="form-control" placeholder="Your message" aria-label="Your message" aria-describedby="button-addon2">
                            <button class="btn btn-outline-secondary" type="button" id="button-addon2"><i class="fas fa-paper-plane"></i></button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
<!-- JavaScript Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8" crossorigin="anonymous"></script>
</html>

CSS code

Scoped CSS that styles the component. Paste it after Bootstrap 5.2.0 to keep the design, spacing, and responsiveness consistent.

body {
  background-color: #f4f7f6;
}

#ChatBox {
  background: #fff;
  border-radius: 0.55rem;
  border: 1px solid #ced4da;
}
#ChatBox * {
  /* width */
  /* Track */
  /* Handle */
  /* Handle on hover */
}
#ChatBox *::-webkit-scrollbar {
  width: 5px;
}
#ChatBox *::-webkit-scrollbar-track {
  background: transparent;
}
#ChatBox *::-webkit-scrollbar-thumb {
  -webkit-transition: 0.3s all;
  -moz-transition: 0.3s all;
  -ms-transition: 0.3s all;
  -o-transition: 0.3s all;
  transition: 0.3s all;
  background-color: #cccccc;
  border-radius: 0.25rem;
}
#ChatBox *::-webkit-scrollbar-thumb:hover {
  background-color: #555;
}
#ChatBox .user-avatar {
  border-radius: 9999999px;
  border: 5px solid #00000015;
  overflow: hidden;
}
#ChatBox .sidebar {
  border-right: 1px solid #ced4da;
  padding: 1rem;
}
#ChatBox .sidebar .users-list {
  list-style-type: none;
  padding: 0;
  margin: 0;
  max-height: 100%;
  overflow-x: hidden;
  overflow-y: scroll;
}
#ChatBox .sidebar .users-list li {
  cursor: pointer;
  padding: 0.25rem;
  -webkit-transition: 0.3s all;
  -moz-transition: 0.3s all;
  -ms-transition: 0.3s all;
  -o-transition: 0.3s all;
  transition: 0.3s all;
  margin-bottom: 0.25rem;
}
#ChatBox .sidebar .users-list li.active, #ChatBox .sidebar .users-list li:hover {
  background: #efefef;
  border-radius: 0.25rem;
}
#ChatBox .sidebar .users-list li .user-name {
  font-size: 1rem;
}
#ChatBox .sidebar .users-list li .status {
  text-transform: uppercase;
  font-weight: bold;
  font-size: 9px;
  color: #adb5bd;
}
#ChatBox .chat-frame {
  padding: 1rem;
}
#ChatBox .chat-frame .action-frame {
  padding-bottom: 1rem;
  border-bottom: 1px solid #ced4da;
}
#ChatBox .chat-frame .message-history {
  max-height: 500px;
  overflow-x: hidden;
  overflow-y: scroll;
}
#ChatBox .chat-frame .message-history .message-line {
  padding: 1rem;
}
#ChatBox .chat-frame .message-history .message-line .user-avatar {
  width: fit-content;
}
#ChatBox .chat-frame .message-history .message-line.reply .message:before {
  left: 20px;
  right: initial;
}
#ChatBox .chat-frame .message-history .message-line .message {
  background: #efefef;
  border-radius: 0.55rem;
  font-size: 14px;
  color: #2d2d2d;
  padding: 1rem;
  width: fit-content;
  position: relative;
}
#ChatBox .chat-frame .message-history .message-line .message:before {
  content: "";
  display: block;
  position: absolute;
  top: -25px;
  right: 20px;
  border-top: 15px solid transparent;
  border-right: 15px solid transparent;
  border-bottom: 15px solid #efefef;
  border-left: 15px solid transparent;
}
#ChatBox .chat-frame .inputs {
  padding-top: 1rem;
  border-top: 1px solid #ced4da;
}

/*# sourceMappingURL=style.css.map */

Similar snippets

Bootstrap example and template. friends panel list

friends panel list

Bootstrap example and template. social team

social team

Bootstrap example and template. dashboard border cards

dashboard border cards

Bootstrap example and template. Update user profile

Update user profile

Bootstrap example and template. List of Features

List of Features

Bootstrap example and template. New comments and popular post list

New comments and popular post list

Bootstrap example and template. User Profile with tabs

User Profile with tabs

Bootstrap example and template. chat room

chat room

FAQ

How do I use this snippet?

Include Bootstrap 5.2.0, paste the HTML, add the CSS block, and include the JS (if any) to mirror the live preview.

Can I use it in commercial projects?

Yes. It’s free for personal and commercial work; check the snippets license for details.

Is it responsive?

Yes. It inherits the responsive grid and components from Bootstrap 5.2.0.

Bootstrap example and template. Bootstrap 5 chat app frame avatar placeholder

About this bootstrap example/template

Optimized for copy‑paste: clean HTML, scoped CSS, and minimal JS so you can ship production‑ready UI faster and keep designs consistent.

Mobile‑first and responsive by default. Tested across modern browsers to reduce polish time on your project.

Already trusted in 1.5K+ views. Reuse this snippet to speed up landing pages, dashboards, or onboarding flows.

Bootstrap 5.2.0

<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css'>

<script src='https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js'></script>

This code example is based on bootstrap 5.2.0 and the grid system of this framework

Responsive

Based on bootstrap framework makes all the layouts perfectly responsive for all devices

Crossbrowser compatibility

Tested on all major browsers, it works smoothly on all of them

semantic html 5

Built on html / css3 the code quality is really amazing

Simple Integration

This code example can be simply integrated on existing sites and new ones too, all you need to do is copy the code and start working