diff --git a/py/py-version.sh b/py/py-version.sh
index f574b574f49cd1e49f52f4419b85793b45817629..53063381f587dae254e21a0250faa43ae49c368e 100755
--- a/py/py-version.sh
+++ b/py/py-version.sh
@@ -1,5 +1,6 @@
 #!/bin/bash
 
+git_tag="$(git describe || echo unknown)"
 git_hash="$(git rev-parse --short HEAD 2> /dev/null || echo unknown)"
 git_files_are_clean=1
 # Check if there are any modified files.
@@ -11,6 +12,7 @@ if [ "${git_files_are_clean}" != "1" ]; then
 fi
 cat <<EOF
 // This file was generated by py/py-version.sh
+#define MICROPY_GIT_TAG "${git_tag}"
 #define MICROPY_GIT_HASH "${git_hash}"
 #define MICROPY_BUILD_DATE "$(date '+%Y-%m-%d')"
 EOF
diff --git a/stmhal/pyexec.c b/stmhal/pyexec.c
index 294020cec502721291fd2ac892c20000fc930160..ded20e1481b3064e453af84816a3bbf3c3969919 100644
--- a/stmhal/pyexec.c
+++ b/stmhal/pyexec.c
@@ -155,7 +155,7 @@ int pyexec_friendly_repl(void) {
 #endif
 
 friendly_repl_reset:
-    stdout_tx_str("Micro Python build " MICROPY_GIT_HASH " on " MICROPY_BUILD_DATE "; " MICROPY_HW_BOARD_NAME " with STM32F405RG\r\n");
+    stdout_tx_str("Micro Python " MICROPY_GIT_TAG " (" MICROPY_GIT_HASH " on " MICROPY_BUILD_DATE "); " MICROPY_HW_BOARD_NAME " with STM32F405RG\r\n");
     stdout_tx_str("Type \"help()\" for more information.\r\n");
 
     // to test ctrl-C
diff --git a/unix/main.c b/unix/main.c
index e677ff65d02d5a779731726731d177bc72f48fa8..3fd6113284ac54ceb7def82b20f3613ef59c2a9c 100644
--- a/unix/main.c
+++ b/unix/main.c
@@ -142,7 +142,7 @@ STATIC char *prompt(char *p) {
 }
 
 STATIC void do_repl(void) {
-    printf("Micro Python build " MICROPY_GIT_HASH " on " MICROPY_BUILD_DATE "; UNIX version\n");
+    printf("Micro Python " MICROPY_GIT_TAG " (" MICROPY_GIT_HASH " on " MICROPY_BUILD_DATE "); UNIX version\n");
 
     for (;;) {
         char *line = prompt(">>> ");