How to Make a Smart Mirror from Scratch

A smart mirror is a two-way mirror with a display behind it, showing information like the time, weather, and calendar events while you check your reflection. Building one requires a monitor, a small computer, a two-way mirror, and free open-source software. Most builds cost between $100 and $300 depending on the parts you choose, and you can complete one in a weekend without advanced woodworking or electronics skills.

How a Smart Mirror Works

The concept is simple. A two-way mirror reflects most light back at you but lets some light pass through from behind. A monitor placed behind the mirror displays white text and icons on a black background. The black areas stay invisible because no light passes through them, while the bright text shines through the reflective surface. The result looks like information floating inside a normal mirror.

Hardware You Need

The core components are a flat-panel monitor, a Raspberry Pi microcomputer, a two-way mirror panel, and something to hold it all together. Here’s what to look for in each piece.

The Monitor

A portable USB-C-powered monitor in the 15.6-inch range works well because it’s thin, lightweight, and runs off a single cable. Look for 1080p resolution and the highest brightness you can afford. Brightness matters more here than in a normal monitor setup because only about 11% of the display’s light passes through a two-way mirror. A dim screen will be hard to read in a well-lit bathroom. Aim for at least 300 nits, and 400 or higher if your budget allows.

You’ll need to disassemble the monitor from its housing to reduce bulk. This usually means removing the plastic back panel and stand, leaving just the bare LCD panel and its driver board. Take photos of each step so you can reference them during reassembly.

The Computer

A Raspberry Pi is the standard choice. The MagicMirror² software platform, which most builds use, officially supports the Raspberry Pi 2, 3, 4, and 5. The Pi Zero and original Pi 1 are not supported. A Raspberry Pi 4 or 5 gives you the smoothest experience and enough power for additional features like voice control. The whole system, including the Pi and an LED strip, typically draws around 11 watts total, so power consumption is minimal.

The Mirror

You have three options for the reflective surface: two-way glass, two-way acrylic, or reflective film applied to regular glass or plexiglass.

  • Two-way acrylic is the most popular DIY choice. A 3mm thick acrylic mirror sheet comes pre-cut, is lightweight, and won’t shatter. It’s easy to drill through if you need mounting holes.
  • Two-way glass offers better clarity and fewer visual distortions. Professional two-way mirror glass transmits about 11% of visible light and reflects about 68% from the coated side. It looks cleaner but costs more and is heavier.
  • Reflective film is the cheapest option. You apply it to any clear glass or acrylic sheet yourself. It works, but it can have a slight tint and may reflect light unevenly depending on your room’s lighting. Choose film if you want flexibility and a lower cost, but expect some visual trade-offs.

Frame and Fasteners

One of the simplest build designs skips a traditional wooden frame entirely. The Raspberry Pi tutorial approach uses nylon nuts, bolts, and spacers to sandwich together a piece of black card, a clear acrylic backing sheet, the monitor panel, and the two-way mirror. No sawing, no mitering corners. If you prefer a framed look, a basic shadow box frame or a simple wooden frame from a home improvement store works. Just make sure it’s deep enough to contain the monitor and Pi with some room for airflow.

Setting Up the Software

MagicMirror² is the go-to open-source platform. It runs in a web browser wrapped in a desktop application called Electron, which is why you need the full desktop version of Raspberry Pi OS. The Lite version won’t work because it has no graphical environment. Make sure your OS is based on Debian “Bullseye” or newer, as older “Buster” versions are no longer supported.

Installation involves flashing Raspberry Pi OS onto a microSD card using the Raspberry Pi Imager tool, booting up, connecting to Wi-Fi, and then running the MagicMirror² installer script from the terminal. The installer handles most dependencies automatically. Once it’s running, you’ll see a default layout with a clock, calendar, weather forecast, and news headlines.

The real power is in modules. MagicMirror² has a large community library of third-party modules that add features like Spotify playback status, transit schedules, package tracking, Todoist integration, and more. Each module is a small folder you drop into the modules directory, then activate by adding a few lines to a configuration file. The config file is plain text and well-documented, so you don’t need programming experience to customize your layout.

Adding Voice Control

If you want to talk to your mirror, you’ll need a USB microphone plugged into the Raspberry Pi. For Google Assistant integration, you install a Python-based library that listens for voice commands and responds through the Pi’s audio output. The setup requires creating a project in the Google Cloud console and enabling the Assistant API, then running a Python script that handles the voice interaction loop. Alexa integration follows a similar pattern with Amazon’s Voice Service SDK. Voice control is the most complex optional feature, so consider it a second-phase addition after your basic mirror is working.

Motion Detection for Auto Wake

A PIR (passive infrared) motion sensor lets your mirror turn on when you walk up and turn off when you walk away. This saves power and extends the monitor’s lifespan. The sensor connects to the Raspberry Pi’s GPIO pins: the red wire to the 5V power pin, the black wire to ground, and the data wire to a GPIO pin (pin 18 is a common choice). When triggered, the sensor outputs 3.3V on the data pin; when no motion is detected, it drops to 0V.

On the software side, a MagicMirror² module reads that GPIO pin and toggles the display. You can set a timeout so the screen stays on for a few minutes after the last detected motion, giving you time to finish getting ready without waving your arms.

Ventilation and Heat

Electronics generate heat, and a sealed frame with no airflow will shorten the life of your monitor and Pi. Leave gaps or drill ventilation holes along the top and bottom edges of your frame so warm air can rise and escape naturally. Keep cables organized behind the mirror to avoid blocking airflow. If you’re using a deeper frame, a small 5V USB fan mounted inside can help, but most builds with a thin portable monitor and a Pi produce modest heat and do fine with passive ventilation alone.

Mounting on the Wall

A completed smart mirror with an acrylic panel and a portable monitor is surprisingly light, often under 10 pounds. A pair of French cleats rated for 80 to 120 pounds will hold it securely with plenty of margin. French cleats are aluminum Z-shaped brackets: one piece screws into the wall studs, the other attaches to the back of the mirror, and they interlock. This makes it easy to lift the mirror off the wall when you need to access the electronics or update the SD card.

Route your power cable down the wall behind the mirror. If your mirror hangs near an outlet, a flat plug adapter keeps the cord from pushing the frame away from the wall. For a cleaner look, an electrician can install a recessed outlet directly behind the mirror’s location.

Keeping the Display Readable

The single biggest factor in how good your mirror looks is the lighting ratio between the room side and the display side. Two-way mirrors work best when the room side is about 8 times brighter than the area behind the mirror. In practice, this means your bathroom or hallway lighting should be bright, and any area of the mirror not covered by the monitor should be backed with black material, like black card stock, to prevent light leakage that would reveal the electronics behind the glass.

On the software side, use a dark theme with white or light-colored text on a pure black background. Any background color other than black will glow through the mirror and ruin the effect. Most MagicMirror² themes default to this layout, but double-check if you install custom modules that might introduce colored backgrounds or images.