Designing a Flag With Circle Of Stars
The geometry is simple enough in theory, but the implementation has a few corners that will bite you if you aren't paying attention. I spent about three weeks last year refining a circular star layout for a client's municipal branding project, and honestly, most of the time was wasted on edge cases that aren't documented anywhere useful. Here's what you need to know before you start. You're placing N stars evenly around a circular path. The stars themselves have a rotation component that matters a lot more than people expect. Each star needs to be rotated by an angle equal to its position index multiplied by 360/N, but also rotated so the point faces outward from the center. If you miss that second rotation, your stars will look like they're leaning sideways, which immediately reads as amateur work. The star-point should always radiate away from the circle's midpoint. The radius of the circle determines star density and visual weight. Standard flag proportions usually call for the circle to sit between 40% and 60% of the flag's height. Go wider than that and the stars crowd each other. Go narrower and the whole design collapses into a meaningless dot cluster. I ran into this exact problem with a 7-star variant where at 45% height ratio the stars were nearly touching at their tips, which looked sloppy at small sizes but fine on a giant banner. The fix was bumping the ratio to 52% and reducing the star size by about 8%. It took me two hours of rendering test images at different scales to land there.
SVG implementation details
Here's the straightforward approach using SVG, which is what you want for any web or print flag design. Define a <g> element for each star, apply a transform="rotate(angle cx cy)" attribute, and offset the star from the center by the radius you've chosen. You can use a <polygon> for the star shape or a <path> if you need more precision on the point angles. For a 12-star layout like the European Union flag, the angle step is 30 degrees. The star rotation offset is 90 degrees because SVG's default 0-degree rotation points straight up, and you want the top point of each star to face directly outward from the circle center. So each star gets a rotation of index * 30 + 90 plus a translate to push it out to radius R. Don't use CSS transforms for this if the flag needs to render in email clients or older browsers. Inline SVG attributes are universally supported. I learned that the hard way when a client's internal dashboard rendered the stars at odd angles in Internet Explorer 11, which doesn't properly handle transform-origin on SVG elements.
Common pitfalls that will waste your time
Subpixel rendering is the silent killer. When your circle radius and star positions don't land on clean pixel boundaries, adjacent stars can merge or gap unpredictably depending on the zoom level. This is especially noticeable at 1x display resolution. The workaround is to round your coordinates to whole pixels or half-pixels, or to use a slight stroke with the same color as the background to create a visual separation. It's a hack, but it's reliable. Another issue that catches people out: the visual center of a star polygon isn't its geometric center. A five-pointed star has more mass at the points than at the inner vertices, so when you place twelve stars around a circle, the circle of stars can appear slightly offset from the flag's true center. The fix is to adjust the positioning radius by about 2-3% inward from the calculated value. You'll know it's right when the arrangement feels balanced rather than drifting.
Get the Full Details

Where to get reference implementations
If you're looking for a ready-made Flag With Circle Of Stars component, the cleanest free option I've found is the svgflags repository, which has production-ready SVG files for most national and regional flags including the EU star circle layout. The code is well-structured and you can extract the star placement logic directly. For a more general-purpose tool, the Flagpedia API provides SVG assets under permissive licensing, though the star circle variants aren't always pre-rendered. I also maintain a small utility script that generates the star coordinates for any N-star configuration at any radius. It's not polished but it handles the rotation math and outputs valid SVG snippets. You can find it on my GitHub under the name star-circle-gen. It's written in Python and takes about 30 seconds to generate a full flag SVG once you've installed the dependencies.
When this approach breaks down
Circular star arrangements only work cleanly when N divides evenly into 360 without awkward remainders. Five stars give you 72-degree steps, which is fine. Seven stars give you 51.43 degrees, and while mathematically correct, the resulting layout can look slightly off-center depending on the star orientation because 7 doesn't align well with the typical 45 or 90-degree visual anchors people expect. Eighteen or twenty-two stars work perfectly. Thirteen is borderline. If you're working with a prime number of stars greater than 7, test the output at actual flag proportions before committing to it. It might look fine in your designer software and completely wrong when printed at full size. The whole process from blank canvas to production-ready SVG flag typically takes me about 45 minutes for a standard configuration. Most of that time isn't the geometry, it's the iterative scaling tests and the subpixel fixes. If someone tells you they can produce a clean circular star flag in under ten minutes, they're probably skipping the test renders and hoping the browser will cooperate.