Dealing with GS-1 and Amazon

I have gone and joined GS-1 and got barcode numbers.

This is a shame in some ways, but Amazon seem to be insisting on GS-1 checks. It looks increasingly like the listing I got with a re-sold UPC code for a pack of cards was somehow a fluke.

It is a simple process and you get codes instantly, but that does not help as apparently the on-line checker does not show instantly (WTF not?) and you do not get a "certificate" for a couple of days (again, WTF not?).

So even with a GS-1 prefix I cannot list anything else on Amazon (yet). Stupid or what.

I appreciate the orders for my first deck of cards, and the reviews, thank you all. Keep 'em coming.

However, I noticed something odd on GS-1 which I had not seen before. They list the codes you have (and even, helpfully, have worked out the check digit, which is not hard).

But they do not provide the graphic/artwork for the barcode simply. You have to click some button to ask for it. OK, but then it says I have "3 image credits" and can "buy more".

Hang on, seriously, they will make bar code images for £7 to £16 per image?

Making a barcode image is not hard, seriously. I did this in school in the early '80s (I sold RML some s/w to scan UPC and EAN codes as well when in sixth form). But it really is not hard. I have a simple program to do it, and it can even be coded in raw postscript.

This is how much work it is in postscript, with checksum calculation... Why charge for images at all for "members". How is that the behaviour of a non-profit members organisation, really?

%%BoundingBox: 0 0 132 120
% EAN Bar code printing system
/EAN_dict 20 dict def EAN_dict begin
/w 1 dup dtransform exch round exch idtransform pop def
/h 60 def % point size height of bars
/m[{3 2 1 1}{2 2 2 1}{2 1 2 2}{1 4 1 1}{1 1 3 2}
   {1 2 3 1}{1 1 1 4}{1 3 1 2}{1 2 1 3}{3 1 1 2}]def
/r[[0 0 0 1 1 1][0 0 1 0 1 1][0 0 1 1 0 1][0 0 1 1 1 0][0 1 0 0 1 1]
   [0 1 1 0 0 1][0 1 1 1 0 0][0 1 0 1 0 1][0 1 0 1 1 0][0 1 1 0 1 0]]def
/b 1000 array def
/lhs 10 array def
/rhs 10 array def

/EAN_ck{% str with ? EAN_ck string
 dup[exch dup{48 sub}forall pop 0 9 7 counttomark 4 sub
 {dup 5 -1 roll mul 4 -1 roll add 3 1 roll exch
 }repeat pop pop 10 mod exch dup length 1 sub 3 -1 roll 48 add put pop
}bind def

/EAN{EAN_dict begin
 [exch{48 sub}forall counttomark /l exch def
 l 13 eq{13 -1 roll r exch get /rr exch def}if/p l 2 idiv def
 rhs 0 p getinterval astore pop lhs 0 p getinterval astore pop pop
 [1 1 1 0 1 p 1 sub l 13 eq
 {{lhs 1 index get m exch get exec 5 -1 roll rr exch get 1 eq{2 1 4{-1 roll}for}if}for}
 {{lhs exch get m exch get exec}for}ifelse
 1 1 1 1 1 0 1 p 1 sub{rhs exch get m exch get exec}for
 1 1 1 counttomark b 0 3 -1 roll getinterval astore true exch
 {w mul exch
  {gsave 0 h rlineto dup 0 rlineto 0 h neg rlineto
   closepath fill grestore false}{true}ifelse exch 0 rmoveto
 }forall pop pop
end}bind def

/EANP{EAN_dict begin gsave
 gsave dup EAN_ck EAN grestore 0 -5 rmoveto w 1 scale
 /OCRB findfont dup setfont(0)stringwidth pop 7 exch div
 scalefont setfont
 dup length 2 mod 1 eq{
  dup 0 1 getinterval dup stringwidth pop neg 0 rmoveto show
  dup length 1 sub 1 exch getinterval}if 3.5 0 rmoveto
 dup length 2 idiv 1 index 0 2 index getinterval 3 1 roll dup getinterval
 exch 2{gsave 1 setgray
  dup length 7 mul dup 0 rlineto 0 10 rlineto neg 0 rlineto closepath fill
  gsave dup show grestore length 7 mul 4 add 0 rmoveto
grestore end}def

% This is an example :-
%36 dup moveto (5060319060290) EANP showpage

If there is a market for this I will be happy to do it for £1 a go, LOL!

Update: I used their £16 a shot tool (well I had three credits) to make one. It took over 10 seconds to make (WTF). It makes an EPS which looks like this...

So I ran my C code to make this which makes an SVG and comes out much nicer, actually uses OCR-B, and works just as well. Took 4ms user time to run. I mean really, WTF are they doing?!?


  1. You should charge £1 a pop, then just supply them with this link: http://lmgtfy.com/?q=barcode+generator

  2. Well, that's the point – the only people who will fall for this are the very stupid. It is a moral imperative to separate suckers from their money; if you don't take it, they'll only give it to a cryptocurrency scam or the Scientolists.

    "If God had not meant them to be sheared, he would not have made them sheep."


Comments are moderated purely to filter out obvious spam, but it means they may not show immediately.

Companies bad at banking

I was discussing with a colleague the other day how so many companies are so bad with banking. In some ways we have been lucky, but to be fa...