WiFi Webradio on ESP8266 or ESP32

A fully featured wifi web radio player with only low cost boards.
with or without a vs1053 board

Similar projects worth following
Control with any browsers (ie edge, chrome mozilla etc...).
or with an external hardware panel or with the uart interface or with telnet.
Memory for 255 stations
OTA (On the Air) upgrade,
Read direct mp3 or ogg or WMA streams or playlist .pls .m3u, asx and .xspf
Read up to a 320 kb/s stream,
Encoder, IR, lcd ...
Embedded wifi configuration via the web or serial or telnet.
Metadata displayed (ie Title of the current song if given in the stream),
Permanent setting (sound setting, stations, wifi)
Server multi clients with automatic refresh (websocket),
The stations may be downloaded and uploaded within the web site,
Stations sort management by drag drop.
very quick responsive web by caching local information in the browser and websocket.
additional hardware: a led indicates the state of the equipment
Optional: control switches, lcd display, additional ram for buffering

See for the description of the minimal prototype.

See Github for sources

See github source for the ESP32 version ( vs1053 or i2s or pcm or internal DAC)

See A project derived from KaRadio32 in progress.

See the lcd +IR software's on Github AddOn

See some realizations of users at KaraDio

A nextion touchscreen display for KaraDio from yo2ldk : Here

For more informations or questions, you can enter to the Karadio facebook group

KaRadio32 Release 2.3

Release 2.3 Rev 0 - Built on 2022/02/23


  • 2.3 R0:
    • RAM optimization
    • Audio buffer size incremented.
    • Bugs correction: HTML chunks processing and Meta computing
    • Stack crash on http instant command removed
    • AAC Decoding improved
  • 2.2 R1:
    • Introducing WIFI QoS Ip precedence AC_VI
    • SPDIF output improved
    • DAC bugs removed.
    • AAC Decoding improved (but not perfect)
    • New patch for the vs1053. Play OGG too.
  • 2.2 R0:
    • Many internal optimizations
    • ascii unicode #&xxxx; decoded
    • aac decoder improved.
    • Added html commands volume+ and volume-

    KaRadio: Release 2.1

    Release 2.1 R0 - Built on 2021/02/15

    • 2.1 R0:
      • Security: the ssid passwords are no longer sent on each "Setting" display, but only when changed.
      • Bug fixed: in parse playlist. Possible memory leak. Thanks to HmarikBel
      • Bug fixed: Special char in station name was incorrectly sent.
      • Some minors improvements.
    • 2.0 R0:
      • Better handling of the large "header moved"
      • Better monitoring
      • timezone suggestion on the setting page



    For ESP32 see the github page KaRadio32.

    ESP8266 Simplest prototype:

    - Optional external ram (23LCV1024) support (1:CS/=GPIO16 2:MISO=GPIO12 3:NC 4:GND 5:MOSI=GPIO13 6:SCK=GPIO14 7:GND 8:3.3v)

    The optional led is now on GPIO2. The blue led on the ESP8266 is blinking at the same rate.
    GPIO16 is now the Chip select for the external ram if any.
    The external ram is detected at boot time if present.

    To upgrade to this release, please flash at 0x1000 , at 0X81000 and blank.bin at 0x7e000 & 0x3fe000
    After that, all next updates are done with the On The Air (OTA) feature.
    New binaries are hosted at .

    Loading the esp8266

    First use

    • If the access point of your router is not known, the webradio initializes itself as an AP. Connect your wifi to the ssid "WifiWebRadio",
    • Browse to to display the page, got to "setting" "Wifi" and configure your ssid ap, the password if any, the wanted IP or use dhcp if you know how to retrieve the dhcp given ip (terminal or scan of the network).
    • In the gateway field, enter the ip address of your router.
    • Validate. The equipment restart to the new configuration. Connect your wifi to your AP and browse to the ip given in configuration.
    • Congratulation, you can edit your own station list. Don't forget to save your stations list in case of problem or for new equipments.
    • if the AP is already know by the esp8266, the default ip at the first start is
    • a sample of stations list is on . Can be uploaded via the web page.


    Please tell me if you succeeded or something more can be done, thanks.
    The second step will add some hardware buttons (vol + -, station + -, play ...)


    From ESP8266_ESP12( 3.3 v) or nodeMCU(5v) to VS1053 (5 v)



    CH_PD to 3.3v

    GPIO16 (a 1Hz output)

    D5:GPIO14 to VS1053 SCK

    D6:GPIO12 to VS1053 MISO

    D7:GPIO13 to VS1053 MOSI

    TXD to CH340G UART rx

    RXD from CH340G UART tx

    D1:GPIO05 to VS1053 XDCS

    D2:GPIO04 to VS1053 DREQ

    D3:GPIO00 to VS1053...

Read more »


KaRadio32 2.3R0

application/octet-stream - 1.49 MB - 01/01/2021 at 21:11


KaRadio 2.1 R1 Partition 1

application/octet-stream - 424.75 kB - 01/11/2020 at 18:13


KaRadio 2.1 R1 Partition 2

application/octet-stream - 424.75 kB - 01/11/2020 at 18:13


octet-stream - 3.98 kB - 09/17/2017 at 10:26


octet-stream - 4.00 kB - 07/21/2016 at 15:19


View all 6 files

View all 6 components

View all 11 project logs

  • 1
    Step 1


    From ESP8266_ESP12( 3.3 v) or nodeMCU(5v) to VS1053 (5 v)


    ADC : gound if control panel not used

    CH_PD to 3.3v

    GPIO16 led output

    D5:GPIO14 to VS1053 SCK

    D6:GPIO12 to VS1053 MISO (or so)

    D7:GPIO13 to VS1053 MOSI (or si)

    TXD to CH340G UART rx

    RXD from CH340G UART tx

    D1:GPIO05 to VS1053 XDCS

    D2:GPIO04 to VS1053 DREQ

    D3:GPIO00 to VS1053 XRST


    D8:GPIO15 to VS1053 XCS

View all instructions

Enjoy this project?



stefanvasiliu wrote 05/24/2023 at 10:23 point

Hello, i`m on ESP8266, how i can add addon for 

LCD? I see some addon for LCD. Example:

  Are you sure? yes | no

stchse wrote 04/02/2022 at 20:30 point

Can somebody please help me. When running KaRadio32 on a ESP32-Wroom-V4 together with a VS1053/1003, but also when using a UDA1334A via I2S, I get an audio signal on just one channel.

  Are you sure? yes | no

jimsonweed wrote 02/13/2022 at 16:58 point

Hello! There is a glitch while used hardware decoder vs1053b on this station

  Are you sure? yes | no

NoOne38 wrote 02/13/2022 at 16:55 point

Bonjour Je me permets de vous déranger , je viens de réaliser la dernière version 2.2 R1 un grand merci tout d'abord pour votre super boulot, j'essaie de mettre un ST7735 I2C comme écran et après plusieurs tentatives je n'y suis pas arrivé ( par contre LCD_SPI_ILI9341  et   LCD_I2C_SSD1306 fonctionnent parfaitement)

Auriez-vous des conseils de câblage svp ?  (  CS,DC,RST,SDA et SCL)

merci encore

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 02/13/2022 at 17:17 point

et en lisant ?
C'est souvent les pin qui changent de nom. Il faudra aussi configurer le bon type de lcd par serial ou telnet. ou dans un fichier csv.

  Are you sure? yes | no

NoOne38 wrote 02/13/2022 at 17:46 point

c'est un ST7735 128x128 mais I2C pas un SPI et je n'ai pas trouvé de code équivalent j'ai pourtant  essayé le câbler en I2C sur  :

// I2C lcd (and rda5807 if lcd is i2c or LCD_NONE) //------------------------------------------------

#define PIN_I2C_SCL GPIO_NUM_14

#define PIN_I2C_SDA GPIO_NUM_13

#define PIN_I2C_RST GPIO_NUM_2 // or not used

peut-être avec un autre code serial mais lequel je n'ai pas vu d'équivalence dans la liste

  Are you sure? yes | no

frank.mertin wrote 12/02/2021 at 15:24 point


First of all this is a great project. Is it possible, to add a rotary encoder or some buttons for changing the saved favourite radio stations? This would be a great feature, especially for people who don't want use a smartphone.

Thanks in advance


  Are you sure? yes | no

Aleksey-748 wrote 04/04/2021 at 20:37 point

Взаимодействие с другими людьми

  Are you sure? yes | no

Tipitapi wrote 03/06/2021 at 16:45 point

It works very well! The next update could be MQTT.
Home Assistant Integration? Thanks.

  Are you sure? yes | no

josefburgersanktmartin wrote 01/26/2021 at 18:46 point

The O-led with arduino mini  addon work now , but the  date display  only  "01-01-2000' and the clock work like a function time counter , it count the time from powering on  .What can i do to fix this ?  Thank you !

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 01/30/2021 at 21:42 point

This is because the request time from the mini is not received by the esp. Check the mini tx ---- rx esp wire

  Are you sure? yes | no

josefburgersanktmartin wrote 01/31/2021 at 08:43 point

in my schematic the wire mini tx ---- rx esp not exist ,   only tx from ESP 8266 to rx mini , i have only 3 wires from radio to mini , 3,3V GND and  tx esp to rx mini

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 01/31/2021 at 08:50 point

Yes a mistake.
but in u8glibConf.h you can read:

The tx of the pro mini must be connected to the rx of the esp12 but
Warning; the esp rx pin is not 5V tolerant, so if your pro mini is a 5v version we nned to adapt the level.

The value of the resistors is not critical. Only th ration 1/3 2/3 must be respected 1k and 2k for example)

  Are you sure? yes | no

zhenya4444 wrote 07/20/2022 at 18:08 point

Hello. I have a few questions for you. I can't write to you on this site. Give your mail.

  Are you sure? yes | no

hehaipeng wrote 12/14/2020 at 05:15 point

hank you! Production completed. It's just that China's radio streaming media does not support the display of radio program information, and the display screen looks ugly and harmonious. I want to adjust the screen display layout and enlarge the font, but I'm not very familiar with programming, and I'm only good at hardware. Hope under the guidance, thank you!

  Are you sure? yes | no

podhradp wrote 11/28/2020 at 21:41 point

Hello, i have Ai-Thinker ESP32-A1S-audio board. But sound not work. It have AC101 hal audio. 

Any idea how solve this?

  Are you sure? yes | no

Vanya Venikov wrote 09/23/2020 at 11:31 point

Hello, there is a bug in KaRadio32_19R7.bin - ogg vorbis streams does not work. Using KaRadio32_19R6.bin works correctly. Could you fix the bug in future release?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 02/02/2021 at 14:56 point


  Are you sure? yes | no

Marco wrote 05/19/2020 at 14:28 point


I would like to add a I2C display to my Karadio. Do I need an Arduino micro or can I connect it directly to the ESP32?


  Are you sure? yes | no

josefburgersanktmartin wrote 04/19/2020 at 17:42 point


I want to add to my KaRadio with ESP8266 and VS 1053 an 16x2 (or 20x4 )  liquid crystal display  with Arduino uno (or Nano )supplied with 5V . Can i connect RX-TX from Arduino and ESP8266 direct or I need a level adaptor ?Can you help with schematic ?

  Are you sure? yes | no

Jimsonweed wrote 02/14/2020 at 15:44 point

Hello, is it possible of implementing flac stream for karadio32 with vs1053 decoder? And wma parcing with "mms:" stream, since vs1053 is support all of it.

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 04/20/2020 at 07:42 point

I don't think that the esp wifi will support the stream speed for a flac.

Never tried.

  Are you sure? yes | no

Martin Fasani wrote 01/15/2020 at 15:20 point

Added to my curated list Espressif

  Are you sure? yes | no

ifcristian wrote 12/09/2019 at 19:38 point

Hi! Nice job! Nice job!

I need help with one idea... i want to implement auto start chanel from day and hour. One day at 10 listen x chanel other day y chanel from y hour. You can help me? Regards !

  Are you sure? yes | no

simon wrote 08/27/2019 at 15:07 point


I have installed your Software on two ESP32 systems and booth working very well, i have only two suggestions.

1. sometimes after power the radio, the ESP32 don´t connect to the wifi and start instead the AP, the router is not far from the ESP... and next time the ESP connect to the WIFI, maybe it is possible to programm a routine, when AP is active, check every 5 minutes to stored WIFI networks.

2. somitimes when i switch a light in the near of the Radio, i hear a knock at the speaker and the radio is loudless, after a restart the radio is working well. Ithink the problem is the VS1053, maybe it is possible to check if the VS1053 is working, if not, give him a reset.

  Are you sure? yes | no

Martin Fasani wrote 01/15/2020 at 15:23 point

I have a suggestion about that: Instead of using WiFi manager, let WiFi configuration come from Bluetooth serial or BLE (Serial is a smaller lib)
Here there is an example:
There is an Android app called "ESP32 WiFi setup over BLE or Bluetooth Serial" and then you can easily setup the Radio via Bluetooth

  Are you sure? yes | no

Georde wrote 07/29/2019 at 22:29 point

Hello. I have a problem: I cannot access the web page ( Connection to AP is correct. wifi "WifiWebRadio".  My browser, it says "This site can't be reached." 

What am I not doing well, what am I supposed to do?

Thank you

  Are you sure? yes | no

Curt Parrish wrote 07/25/2019 at 15:35 point


I like this project but haven't had much success. I'm using a nodemcu v.3 with an ESP8266 and a VS1053. After flashing the nodemcu, I can see a response from it in a terminal program. Following the directions in the response, I can connect to WifiKaRadio successfully, but when I enter in my browser, it says "This site can't be reached." There is also no result pinging that IP address, but does respond to the ping. I can't get any farther than this.

Can anyone help?

  Are you sure? yes | no

Sera26 wrote 05/13/2019 at 18:52 point


Playing of radio stations are lagging strongly with KaRadio, the streams are unpalatable.

I have already removed control buttons (ADC and GND bridged) and STM32+LCD but radio can't play stations continuously.

What can be the problem?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/14/2019 at 08:37 point

What is the log?

  Are you sure? yes | no

Sera26 wrote 05/14/2019 at 09:10 point

Sorry, for ignorance but how can I get log file?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/31/2019 at 15:47 point

resolved, thanks.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates