public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
* [bitcoindev] [bitcoin-dev] Proposal discussion: BIP39 native-language display wordlists
@ 2026-06-08 14:24 Daniel Osemberg
  2026-06-13 16:34 ` 'conduition' via Bitcoin Development Mailing List
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Osemberg @ 2026-06-08 14:24 UTC (permalink / raw)
  To: Bitcoin Development Mailing List


[-- Attachment #1.1: Type: text/plain, Size: 2357 bytes --]



Hi list,

I would like to ask for early feedback on an idea before attempting any 
formal BIP submission.

The proposal is a display/input layer for BIP39 recovery phrases in 
additional native languages.

The important constraint is that this does not change the BIP39 
cryptographic flow. The canonical mnemonic remains the existing BIP39 
English wordlist, and PBKDF2 is still performed on the canonical English 
form.

The native-language lists are index-paired to the English BIP39 wordlist. 
In other words, each native word maps to the same 0-2047 index as the 
corresponding English BIP39 word. Wallets could display or accept the 
native-language form for UX purposes, but internally normalize back to the 
canonical English mnemonic before seed generation.

Motivation:

Many users around the world are asked to back up and restore Bitcoin 
wallets using English recovery words, even when English is not their native 
language. This creates UX risk, spelling mistakes, misunderstanding, and 
lower confidence during backup and recovery.

This proposal tries to improve multilingual recovery UX while keeping 
compatibility with existing BIP39 behavior.

This is not:

A new seed scheme
A replacement for BIP39
A new cryptographic standard
A change to PBKDF2 input
A wallet-specific format

It is intended as a display/input convention for wallets that want to 
support native-language recovery UX while preserving canonical BIP39 
compatibility.

A draft implementation and wordlists are here:

https://github.com/osem23/bip39-wordlists-tzur

I would appreciate feedback on:

Whether this idea is appropriate for the BIP process at all
Whether it should be considered informational rather than standards-track
Whether the index-paired approach creates hidden risks
Whether wallet developers see practical value in this
How native-speaker review and normalization rules should be handled
Whether there is prior work I should study before continuing

Thank you,
Daniel

-- 
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/e4ee1a70-aa70-4dbe-9f6c-27c26c5d17e0n%40googlegroups.com.

[-- Attachment #1.2: Type: text/html, Size: 2796 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [bitcoindev] [bitcoin-dev] Proposal discussion: BIP39 native-language display wordlists
  2026-06-08 14:24 [bitcoindev] [bitcoin-dev] Proposal discussion: BIP39 native-language display wordlists Daniel Osemberg
@ 2026-06-13 16:34 ` 'conduition' via Bitcoin Development Mailing List
  2026-06-13 16:39   ` Daniel Osemberg
  0 siblings, 1 reply; 3+ messages in thread
From: 'conduition' via Bitcoin Development Mailing List @ 2026-06-13 16:34 UTC (permalink / raw)
  To: Daniel Osemberg; +Cc: Bitcoin Development Mailing List


[-- Attachment #1.1.1: Type: text/plain, Size: 4502 bytes --]

Hey Daniel,

So basically this would allow a user to translate an english language BIP39 seed phrase to/from other languages, insured by the knowledge that it be converted back if needed for compatibility with english-only BIP39 wallets.

Neat idea. This is how BIP39 should've been done originally. Today, a BIP39 seed derives a different master key depending on what language is used to encode the source entropy, which was arguably a mistake because it breaks compatibility between implementations written for different locales, and incentivizes everyone to use seeds of the same language so that they're maximally compatible (which is exactly what happened). 

I worry your proposal here might cause confusion if introduced today though. Say you are given a french language 12-word seed phrase. Do you map the word indices to english and then run PBKDF2 with your algorithm? Or do you run PBKDF2 on the french version as specified in the original BIP39?

There would need to be a clear way for humans and software to distinguish between a "locale-mapped seed phrase" using your spec, and a legacy french BIP39 seed phrase, so they know how to derive the correct master key.

I guess one could argue that non-english BIP39 seeds are so uncommon that you could safely assume the former, but still it leaves open an unfortunate ambiguity which could lead to lost funds in some cases.

What do you think of this?

regards,
conduition
On Saturday, June 13th, 2026 at 12:04 PM, Daniel Osemberg <daniosemberg@gmail.com> wrote:

> Hi list,
> 

> I would like to ask for early feedback on an idea before attempting any formal BIP submission.
> 

> The proposal is a display/input layer for BIP39 recovery phrases in additional native languages.
> 

> The important constraint is that this does not change the BIP39 cryptographic flow. The canonical mnemonic remains the existing BIP39 English wordlist, and PBKDF2 is still performed on the canonical English form.
> 

> The native-language lists are index-paired to the English BIP39 wordlist. In other words, each native word maps to the same 0-2047 index as the corresponding English BIP39 word. Wallets could display or accept the native-language form for UX purposes, but internally normalize back to the canonical English mnemonic before seed generation.
> 

> Motivation:
> 

> Many users around the world are asked to back up and restore Bitcoin wallets using English recovery words, even when English is not their native language. This creates UX risk, spelling mistakes, misunderstanding, and lower confidence during backup and recovery.
> 

> This proposal tries to improve multilingual recovery UX while keeping compatibility with existing BIP39 behavior.
> 

> This is not:
> 

> A new seed scheme
> A replacement for BIP39
> A new cryptographic standard
> A change to PBKDF2 input
> A wallet-specific format
> 

> It is intended as a display/input convention for wallets that want to support native-language recovery UX while preserving canonical BIP39 compatibility.
> 

> A draft implementation and wordlists are here:
> 

> https://github.com/osem23/bip39-wordlists-tzur
> 

> I would appreciate feedback on:
> 

> Whether this idea is appropriate for the BIP process at all
> Whether it should be considered informational rather than standards-track
> Whether the index-paired approach creates hidden risks
> Whether wallet developers see practical value in this
> How native-speaker review and normalization rules should be handled
> Whether there is prior work I should study before continuing
> 

> Thank you,
> Daniel
> 

> --
> You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+unsubscribe@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/e4ee1a70-aa70-4dbe-9f6c-27c26c5d17e0n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/FOZaQw_eyfsyT45cgYr6VCHB79in1lybdP9HBbm-KkEQqqjwrNA5DHghqebO1nB3PhvpHyhmPoD5qlHi7KHygLzRqXU6u_B9LSm5K-H-YC8%3D%40proton.me.

[-- Attachment #1.1.2.1: Type: text/html, Size: 6599 bytes --]

[-- Attachment #1.2: publickey - conduition@proton.me - 0x474891AD.asc --]
[-- Type: application/pgp-keys, Size: 649 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 343 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [bitcoindev] [bitcoin-dev] Proposal discussion: BIP39 native-language display wordlists
  2026-06-13 16:34 ` 'conduition' via Bitcoin Development Mailing List
@ 2026-06-13 16:39   ` Daniel Osemberg
  0 siblings, 0 replies; 3+ messages in thread
From: Daniel Osemberg @ 2026-06-13 16:39 UTC (permalink / raw)
  To: Bitcoin Development Mailing List


[-- Attachment #1.1: Type: text/plain, Size: 6763 bytes --]



Hi conduition,

Thank you for the thoughtful feedback. I agree that ambiguity is the main 
issue any proposal like this has to handle carefully.

To clarify the design: TZUR display wordlists are not meant to replace or 
reinterpret existing BIP39 wordlists. They are separate, index-parallel 
display wordlists whose purpose is to render and accept a user-facing 
mnemonic in another language while keeping the canonical English BIP39 
mnemonic as the seed of record.

So the derivation path for a TZUR display mnemonic is always:

localized TZUR display words → word indices → canonical English BIP39 words 
→ standard BIP39 checksum validation → standard PBKDF2 → standard 
BIP32/BIP84 derivation

The localized words themselves are never passed directly into PBKDF2. Only 
the canonical English mnemonic is.

Your French example is exactly the edge case that needs to be explicit. A 
legacy French BIP39 mnemonic and a TZUR French display mnemonic are not the 
same thing. They are two different encodings that may use the same human 
language, and they must not be silently treated as interchangeable.

For that reason, a wallet implementing this convention should not just see 
“French words” and guess. It should know, or ask, which wordlist mode is 
being used:

   1. 
   
   Legacy BIP39 French wordlist
   2. 
   
   TZUR French display wordlist
   3. 
   
   Canonical English BIP39
   
The reference design also includes stable wordlist identifiers: language 
code, version, and SHA256 of the exact wordlist file. A wallet can persist 
that metadata alongside the wallet, and use it during restore to avoid 
ambiguity. But for maximum portability, the wallet should always show the 
canonical English mnemonic as the universal recovery form.

So I think your concern is valid. The safe rule is: never auto-detect 
between legacy non-English BIP39 and TZUR display lists when both exist. 
Make the mode explicit, keep the English mnemonic available, and treat the 
display mnemonic as a UX layer rather than a new seed derivation scheme.

Regards,
Daniel

On Saturday, June 13, 2026 at 7:36:05 PM UTC+3 conduition wrote:

> Hey Daniel,
>
> So basically this would allow a user to translate an english language 
> BIP39 seed phrase to/from other languages, insured by the knowledge that it 
> be converted back if needed for compatibility with english-only BIP39 
> wallets.
>
> Neat idea. This is how BIP39 should've been done originally. Today, a 
> BIP39 seed derives a different master key depending on what language is 
> used to encode the source entropy, which was arguably a mistake because it 
> breaks compatibility between implementations written for different locales, 
> and incentivizes everyone to use seeds of the same language so that they're 
> maximally compatible (which is exactly what happened). 
>
> I worry your proposal here might cause confusion if introduced today 
> though. Say you are given a french language 12-word seed phrase. Do you map 
> the word indices to english and then run PBKDF2 with your algorithm? Or do 
> you run PBKDF2 on the french version as specified in the original BIP39?
>
> There would need to be a clear way for humans and software to distinguish 
> between a "locale-mapped seed phrase" using your spec, and a legacy french 
> BIP39 seed phrase, so they know how to derive the correct master key.
>
> I guess one could argue that non-english BIP39 seeds are so uncommon that 
> you could safely assume the former, but still it leaves open an unfortunate 
> ambiguity which could lead to lost funds in some cases.
>
> What do you think of this?
>
> regards,
> conduition
> On Saturday, June 13th, 2026 at 12:04 PM, Daniel Osemberg <
> danios...@gmail.com> wrote:
>
> Hi list,
>
> I would like to ask for early feedback on an idea before attempting any 
> formal BIP submission.
>
> The proposal is a display/input layer for BIP39 recovery phrases in 
> additional native languages.
>
> The important constraint is that this does not change the BIP39 
> cryptographic flow. The canonical mnemonic remains the existing BIP39 
> English wordlist, and PBKDF2 is still performed on the canonical English 
> form.
>
> The native-language lists are index-paired to the English BIP39 wordlist. 
> In other words, each native word maps to the same 0-2047 index as the 
> corresponding English BIP39 word. Wallets could display or accept the 
> native-language form for UX purposes, but internally normalize back to the 
> canonical English mnemonic before seed generation.
>
> Motivation:
>
> Many users around the world are asked to back up and restore Bitcoin 
> wallets using English recovery words, even when English is not their native 
> language. This creates UX risk, spelling mistakes, misunderstanding, and 
> lower confidence during backup and recovery.
>
> This proposal tries to improve multilingual recovery UX while keeping 
> compatibility with existing BIP39 behavior.
>
> This is not:
>
> A new seed scheme
> A replacement for BIP39
> A new cryptographic standard
> A change to PBKDF2 input
> A wallet-specific format
>
> It is intended as a display/input convention for wallets that want to 
> support native-language recovery UX while preserving canonical BIP39 
> compatibility.
>
> A draft implementation and wordlists are here:
>
> https://github.com/osem23/bip39-wordlists-tzur
>
> I would appreciate feedback on:
>
> Whether this idea is appropriate for the BIP process at all
> Whether it should be considered informational rather than standards-track
> Whether the index-paired approach creates hidden risks
> Whether wallet developers see practical value in this
> How native-speaker review and normalization rules should be handled
> Whether there is prior work I should study before continuing
>
> Thank you,
> Daniel
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Bitcoin Development Mailing List" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to bitcoindev+...@googlegroups.com.
> To view this discussion visit 
> https://groups.google.com/d/msgid/bitcoindev/e4ee1a70-aa70-4dbe-9f6c-27c26c5d17e0n%40googlegroups.com
> .
>
>
>

-- 
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/7fe5fea8-ae9d-4081-a94f-fa9be0677012n%40googlegroups.com.

[-- Attachment #1.2: Type: text/html, Size: 9217 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-06-13 16:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-08 14:24 [bitcoindev] [bitcoin-dev] Proposal discussion: BIP39 native-language display wordlists Daniel Osemberg
2026-06-13 16:34 ` 'conduition' via Bitcoin Development Mailing List
2026-06-13 16:39   ` Daniel Osemberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox